搜索对象数组

时间:2014-06-15 10:55:50

标签: ios iphone arrays arraylist nspredicate

我有一些对象(用户)。

我有问题,这个数组包含相同的对象。

此对象有ID。

我想在这个数组中搜索具有相同id的对象并将结果放在数组中。

最好的方法是什么?

或许有一种方法可以根据这些ID创建NSSet?这将是最好的方式。或者我可以在这里使用谓词吗?

2 个答案:

答案 0 :(得分:0)

我看到两种方式:

  1. 在类中重写isEqual以获取数组的对象,并在此方法中比较对象的ID,然后使用NSSet方法创建[NSSet setWithArray:]

  2. 如果你不能覆盖数组中对象的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的对象数组。