NSPredicate计数>关于多对多关系的0

时间:2016-03-22 07:04:42

标签: ios swift core-data many-to-many nspredicate

我在CoreData中有三级对象层次结构: 假设实体 A 有一组实体 B ,实体 B 有一组实体 C 。 (多对多B和B多对多C)

我希望得到所有实体A,使得As有Bs和Cs。 我在获取实体A:NSPredicate(format: "ANY bs.cs.@count > 0")'时尝试使用谓词,但我收到此错误:Unsupported function expression count: (bs.cs)

如何正确编写此查询?

1 个答案:

答案 0 :(得分:1)

“ANY”运算符不适用于嵌套的多对多关系, 因此你需要一个“SUBQUERY”(遗憾的是它并不是很好 记录)。这样的事情应该有效:

NSPredicate(format:"SUBQUERY(bs, $b, $b.cs.@count != 0).@count != 0")

SUBQUERY(..)部分返回至少有一个相关B个对象的所有相关C个对象。最终.@count != 0部分检查是否有 至少有一个与此属性相关的B对象。