根据属性将对象数组减少为唯一对象

时间:2010-08-31 07:07:36

标签: iphone core-data nsmutablearray nsset

确定。

我有一个数组,其核心数据堆栈填充了多个对象 。 让我们说每个对象都有一个名称,startdate,enddate和amount属性

我需要做的是根据名称(即NSString)将此数组减少到只有唯一对象(而不仅仅是值)。

我在for循环中尝试了isEqual方法,而循环和使用集合,我似乎无法弄明白。

有什么想法吗?


更新:我应该更清楚。基本上我想要做的是获取现有数组,并删除具有相同属性值的重复对象,最后得到一组唯一对象。

4 个答案:

答案 0 :(得分:0)

  1. 获取没有谓词的所有对象 - 结果是一个数组,其中可能包含具有相同名称字符串的多个
  2. 遍历数组,创建一个新的字符串数组(复制每个实体的名称字符串)
  3. 将该数组转换为集合 - 按定义,它只包含唯一名称
  4. 根据需要访问您的核心数据实体,使用谓词“name =%@”获取集合中的任何名称(或者将该集合转换为数组以便于使用)。

答案 1 :(得分:0)

没关系。我使用疯狂的if语句组来计算它,可能不是最有效的方法,但它获得了我需要的结果。

答案 2 :(得分:0)

  1. 将对象提取到NSArray
  2. 创建NSMutableDictionary
  3. 迭代数组。
  4. 检查用作词典中的键的属性是否已经到位,如果是,continue
  5. 如果没有,请将其添加到词典
  6. 完成循环后,在字典上调用-allValues
  7. 现在,您拥有一个在该属性上唯一的对象数组。

答案 3 :(得分:0)

如果您要回答自己的问题,请至少发布代码以帮助其他人解决同样的问题。它也可能是一个适合他们的解决方案。如果您要求其他人发布代码或帮助您,请意识到这是一条双向的街道