我在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)
如何正确编写此查询?
答案 0 :(得分:1)
“ANY”运算符不适用于嵌套的多对多关系, 因此你需要一个“SUBQUERY”(遗憾的是它并不是很好 记录)。这样的事情应该有效:
NSPredicate(format:"SUBQUERY(bs, $b, $b.cs.@count != 0).@count != 0")
SUBQUERY(..)
部分返回至少有一个相关B
个对象的所有相关C
个对象。最终.@count != 0
部分检查是否有
至少有一个与此属性相关的B
对象。