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

NSPredicate count > 0 on many to many to many relationship

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

我想要获取所有实体 A,使得 A 具有 B 和 C。 我在获取实体 A 时尝试使用谓词:NSPredicate(format: "ANY bs.cs.@count > 0")' 但出现此错误:Unsupported function expression count: (bs.cs)

知道如何正确编写此查询吗?

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

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

SUBQUERY(..) 部分 returns 所有相关 B 对象至少有一个相关 C 对象。最后的 .@count != 0 部分检查是否存在 至少有一个相关的 B 对象与这个 属性.