Iphone 在NSMutableSet中查找具有相同属性值的对象
我有一组对象。所有对象显然都是唯一的,但它们可能具有相同的.angle值,这是NSInteger属性 我需要找出是否有两个或两个以上的对象具有相同的.angle值,然后将它们组合成一个数组 我该怎么做?Iphone 在NSMutableSet中查找具有相同属性值的对象,iphone,objective-c,nsmutableset,Iphone,Objective C,Nsmutableset,我有一组对象。所有对象显然都是唯一的,但它们可能具有相同的.angle值,这是NSInteger属性 我需要找出是否有两个或两个以上的对象具有相同的.angle值,然后将它们组合成一个数组 我该怎么做? 任何指导都将非常感谢可能取决于您的数据集有多大。如果较大,则可能必须按角度排序并查找重复项。简单的方法就是创建一个数据集的副本,对它进行迭代,对于项N,查看N+1到底是否有相同的.angle,如果找到,将它们从这个副本集中删除并添加到输出集中 您可以使用NSMutableArray的sortUs
任何指导都将非常感谢可能取决于您的数据集有多大。如果较大,则可能必须按角度排序并查找重复项。简单的方法就是创建一个数据集的副本,对它进行迭代,对于项N,查看N+1到底是否有相同的.angle,如果找到,将它们从这个副本集中删除并添加到输出集中 您可以使用NSMutableArray的sortUsingFunction:context:method。(虽然它是用于排序的,但您可以更高效地完成任务)
n比较结果比较(YourClass*第一个对象、YourClass*第二个对象、void*上下文){
如果([firstObject angle]<[secondObject angle])
回报率下降;
否则如果([firstObject angle]>[secondObject angle])
退而求其次;
其他的
{
//通常情况下,这里会返回DeredName。
//把你的逻辑材料放在这里。例如,存储具有公共角度的对象。
}
}
希望有帮助。使用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);
感谢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);