【问题标题】:Using an NSPredicate to tell if an NSSet contains objects from another NSSet [duplicate]使用 NSPredicate 来判断 NSSet 是否包含来自另一个 NSSet 的对象 [重复]
【发布时间】:2014-01-15 23:51:35
【问题描述】:

我有一个核心数据对象,其中有一个核心数据对象的 NSOrderedSet,称为 hierarchyItems。我想创建一个获取请求,该请求将检查 hierarchyItems 集是否包含一个对象,该对象也在另一个核心数据对象的 NSMutableSet 中。我想创建一个与

具有相同功能的 NSPredicate 或 NSExpression
[obj.hierarchyItems intersectsSet: setOfItems];

【问题讨论】:

  • 对我来说它看起来不像是重复的。这个问题是关于集合交集的,实际上比集合相等更容易测试。
  • @MartinR:集合相等性测试非常简单地从集合交集派生
  • @njzk2:我不太明白你的意思。问题是关于核心数据谓词(只有一组有限的可用运算符)。正如您从“可能重复”的答案中看到的那样,找到与给定集合的关系等于的所有对象比该问题的解决方案更复杂。

标签: ios core-data nspredicate nsset nsexception


【解决方案1】:

获取hierarchyItems与其有非空交集的对象 setOfItems,使用带有谓词的获取请求

[NSPredicate predicateWithFormat:@"ANY hierarchyItems IN %@", setOfItems]

【讨论】:

  • 遗憾的是,这不起作用。我试过这个没有用。
  • @user3200440:嗯,我已经测试过了,它对我有用。 - 你能提供更多信息吗?实体是如何定义的、关系等。您是否收到错误消息、没有结果、错误结果...?
  • 我同意这应该可以完美地工作,但我不知道为什么不能。没有错误消息,我只是得到一个空数组。在你问是之前,这两个集合之间有重叠的对象。
  • @user3200440:只是为了定位问题:如果您获取所有对象(没有任何谓词)然后使用上述谓词过滤获取的数组,它是否有效?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-10
相关资源
最近更新 更多