我在 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(..)
部分返回所有至少具有一个相关 C
对象的相关 B
对象。最后的 .@count != 0
部分检查是否存在
至少一个具有此属性的相关 B
对象。
关于ios - NSPredicate 在多对多关系上计数 > 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36148075/