我有一些对象(用户)。
我有问题,这个数组包含相同的对象。
此对象有ID。
我想在这个数组中搜索具有相同id的对象并将结果放在数组中。
最好的方法是什么?
或许有一种方法可以根据这些ID创建NSSet?这将是最好的方式。或者我可以在这里使用谓词吗?
答案 0 :(得分:0)
我看到两种方式:
在类中重写isEqual
以获取数组的对象,并在此方法中比较对象的ID,然后使用NSSet
方法创建[NSSet setWithArray:]
。
如果你不能覆盖数组中对象的isEqual
方法,那么使用对象的id对数组进行排序,遍历排序的数组并将元素添加到结果NSArray
(或NSSet
)当前和前一个元素的ID不相同时。
答案 1 :(得分:0)
你可以像他一样使用谓语:
NSArray *arr = @[a,b,c];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(id == %@),theIdYouAreLookingFor];
arr = [arr filteredArrayUsingPredicate:predicate];
然后你问结果是否为空。
我认为一个必须有效的方法就是只持有一个NSDictionary而不是NSArray,一旦你输入一个新条目,看它是否存在于字典中 - 如果它没有创建它并添加它 - 如果它只是添加它。 字典应该是这样的: key:objectID value:具有给定id的对象数组。