将NSSet中的对象与NSArray中的对象进行比较

时间:2010-11-03 15:24:07

标签: objective-c core-data comparison nsarray nsset

我一直在思考这个问题已经有一段时间了但是我还没有能够得到一个简洁有效的解决方案。

问题:

我有一个配方列表,它是一个NSArray,每个配方对象都包含NSSet对象的成分。数据是一对多关系&来自coredata。 现在还有另一个列表NSArray,其中包含特定人员当前拥有的物品(成分)。

现在我必须以某种方式比较当前用户所拥有的食谱与配方中的成分。在表格视图中推荐用户食谱,其中包含所有项目,缺少1项,缺少2项和缺少3项等部分。

你们怎么认为我应该解决这个问题。 我尝试了一些事情但最终每次都失去了更多。

任何帮助/指示都将受到高度赞赏

1 个答案:

答案 0 :(得分:5)

你在NSSet中有一些有趣的方法:

  • + (id)setWithArray:(NSArray *)array可让您快速将数组转换为设置。

  • - (BOOL)isSubsetOfSet:(NSSet *)otherSet将允许您查找可能的食谱。

  • - (BOOL)intersectsSet:(NSSet *)otherSet将允许您查找至少包含一种匹配成分的食谱。

  • - (NSSet *)objectsPassingTest:(BOOL (^)(id obj, BOOL *stop))predicate可以让你找到匹配的成分数,使用正确的谓词,就像'我的数组中的对象一样?'