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
对象与这个 属性.
我在 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
对象与这个 属性.