Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在NSMutableSet中查找具有相同属性值的对象_Iphone_Objective C_Nsmutableset - Fatal编程技术网

Iphone 在NSMutableSet中查找具有相同属性值的对象

Iphone 在NSMutableSet中查找具有相同属性值的对象,iphone,objective-c,nsmutableset,Iphone,Objective C,Nsmutableset,我有一组对象。所有对象显然都是唯一的,但它们可能具有相同的.angle值,这是NSInteger属性 我需要找出是否有两个或两个以上的对象具有相同的.angle值,然后将它们组合成一个数组 我该怎么做? 任何指导都将非常感谢可能取决于您的数据集有多大。如果较大,则可能必须按角度排序并查找重复项。简单的方法就是创建一个数据集的副本,对它进行迭代,对于项N,查看N+1到底是否有相同的.angle,如果找到,将它们从这个副本集中删除并添加到输出集中 您可以使用NSMutableArray的sortUs

我有一组对象。所有对象显然都是唯一的,但它们可能具有相同的.angle值,这是NSInteger属性

我需要找出是否有两个或两个以上的对象具有相同的.angle值,然后将它们组合成一个数组

我该怎么做?

任何指导都将非常感谢

可能取决于您的数据集有多大。如果较大,则可能必须按角度排序并查找重复项。简单的方法就是创建一个数据集的副本,对它进行迭代,对于项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);