NSPredicate在多对多关系中计数> 0

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

我想要得到所有的实体A,使得有B和C。 我试图使用一个谓词时提取实体A: NSPredicate(format: "ANY bs.cs.@count > 0")'但我得到这个错误: Unsupported function expression count: (bs.cs)

任何想法如何正确地写这个查询?

“ANY”运算符不适用于嵌套对多关系,因此您需要一个“SUBQUERY”(不幸的是没有很好的logging)。 像这样的东西应该工作:

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

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