簡體   English   中英

在NSMutableSet中查找具有相同屬性值的對象

[英]Find objects with the same property value in NSMutableSet

我有NSMutableSet對象。 所有對象顯然都是唯一的,但它們可能具有相同的.angle值,即NSInteger屬性。

我需要找出是否有兩個或更多具有相同.angle值和組的對象然后進入一個數組。

我怎樣才能做到這一點?
任何指導都將非常感謝

使用NSPredicate實例過濾您感興趣的屬性。例如:

NSSet *dogs = [NSSet setWithObjects:
                [Dog dogWithName:@"Fido" age:2],
                [Dog dogWithName:@"Fluffy" age: 3],
                [Dog dogWithName:@"Spot" age:2],
                nil];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age == %d", 2];
NSSet *twoYearOldDogs = [dogs filteredSetUsingPredicate:predicate];

NSLog(@"%@", twoYearOldDogs);

可能取決於您的數據設置的大小。 如果大,您可能必須按.angle排序並查找重復項。 簡單的方法就是創建數據集的副本,迭代它,對於項目N,查看N + 1到所有具有相同.angle的結尾,如果找到,則從這個副本集中刪除它們並添加到輸出集。

您可以使用sortUsingFunction:context:NSMutableArray的方法。 (雖然它用於排序,但您可以更高效地完成任務)。

  NSComparisonResult compare(YourClass *firstObject, YourClass *secondObject, void *context) {
  if ([firstObject angle] < [secondObject angle])
    return NSOrderedAscending;
  else if ([firstObject angle] > [secondObject angle])
    return NSOrderedDescending;
  else 
  {
    //Normally here NSOrderedSame is returned. 
    //Put your logic stuff here.i.e. storing object for having common angle.
  }
}

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM