我有NSMutableSet的對象。所有的對象都是獨特的,但它們可能具有相同的值.angle值,這是NSInteger屬性。在NSMutableSet中查找具有相同屬性值的對象
我需要找出是否有兩個或多個對象相同.angle值和組然後到一個數組。
我怎樣才能做到這一點?
任何指導將不勝感激
我有NSMutableSet的對象。所有的對象都是獨特的,但它們可能具有相同的值.angle值,這是NSInteger屬性。在NSMutableSet中查找具有相同屬性值的對象
我需要找出是否有兩個或多個對象相同.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,如果找到,將它們從這個副本集中刪除並添加到輸出集。
您可以使用NSUutableArray的sortUsingFunction:context:方法。 (雖然它是爲了排序,你可以以更高的效率完成你的任務)。
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.
}
}
希望它有幫助。
感謝NSPredicate例子。 – dredful 2011-05-07 20:16:47
是的,這正是我所尋找的,謝謝。 – devster 2011-05-07 21:12:35