2011-05-07 29 views
5

NSMutableSet nesnelerim var. Tüm nesneler açık bir şekilde benzersizdir, ancak NSInteger özelliği olan aynı .angle değerine sahip olabilirler.NSMutableSet'te aynı özellik değerine sahip nesneleri bul

İki veya daha fazla nesnenin aynı .angle değerine sahip olup olmadığını bulup gruba dahil etmem gerekiyor.

Bunu nasıl yapabilirim?

cevap

12

Kullanım NSPredicate örneğidir ilgilendiğiniz mülkiyet filtrelemek için. Örneğin: NSPredicate örneğin

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); 
+0

teşekkür ederiz. – dredful

+0

Evet, tam olarak aradığım şey, teşekkürler. – devster

0

Verileriniz ne kadar büyük bir değere ayarlayacağınıza bağlıdır. Büyükse, .angle ile sıralamak ve çiftleri aramak zorunda kalabilirsiniz. Basit bir yol, veri kümesinin bir kopyasını oluşturmak, N için yinelemek, yinelemek, N + 1'in her birine aynı basamak ile bakmaktır ve eğer bulunursa, bu kopya setinden çıkarın ve çıktı kümesine ekleyin.

0

sortUsingFunction: context: NSMutableArray yöntemini kullanabilirsiniz. (Sıralama için olsa da, görevinizi daha iyi verimlilikle gerçekleştirebilirsiniz).

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. 
    } 
} 

Yardım edin.

İlgili konular