2010-08-31 101 views
0

好的。基于属性将对象数组还原为唯一对象

我有一个由我的核心数据栈 填充多个对象的数组。 可以说每个对象都有一个名称,startdate,enddate和与之相关的金额属性

我需要做的是将这个数组减少到仅基于名称的唯一对象(不只是值),这是一个NSString的。

我试过for循环内的isEqual方法,while循环和使用集合,我似乎无法弄清楚。

任何想法?


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

回答

0

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

0
  1. 做一个获取无谓语你所有的物体 - 结果是,其可能含有阵列创建一个新的字符串数组(复制的每个名称的字符串
  2. 叠代具有相同名称的字符串倍数的数组实体)
  3. 将该数组转换为一个集合 - 根据定义,它只包含唯一名称
  4. 访问您的核心数据实体,通过使用谓词“name =%@”执行提取以获取集合中的任何名称为了便于使用,将设置转换回数组)。
+0

嗯,coredata方面不是我工作的角度。该数组是需要减少的,因为它已经从复杂的关系和谓词中填充。所以我只需要关注减少现有的数组。 – monotreme 2010-08-31 07:44:59

+0

好了 - 制作一个包含对象的NSDictionary,并用“名称”值作为关键字。遍历字典键,将每个键添加到数组中。将数组转换为一个集合,回到数组中,然后访问每个唯一的(按名称)对象。 这是简单而明显的方式 - 您也可以使用谓词来完成 - 请参阅http:// www。drobnik.com/touch/2010/03/filtering-fun-with-predicates/ – 2010-08-31 10:47:47

0
  1. 将对象提取为NSArray
  2. 创建一个NSMutableDictionary
  3. 遍历数组。
  4. 检查字典中用作键的属性是否已经存在,如果有的话continue
  5. 如果没有,请将其添加到字典中
  6. 循环完成后,请在字典上调用-allValues

您现在有一个在该属性上唯一的对象数组。

0

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

相关问题