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

标签 ios swift core-data many-to-many nspredicate

我在 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/

相关文章:

ios - Xcode 4.3.2 - 两台 Mac 上的一个项目,一台出错,另一台构建

ios - 在 HTTP 方法中使用 POST 请求保存 UI?

ios - 在 SWIFT 中的函数链中间等待闭包完成

ios - 从 Firebase 数据库在 MKMapView 上放置多个标记

ios - 如何更新 mapView 上 MKAnnotation 对象的位置?

ios - View 高度换行 subview 内容

ios - 如何从索引到索引解析NSString?

ios - 核心数据 sqlite 文件已损坏

iphone - 如何使用 Core Data 设计多标签功能?

iphone - 核心数据 - 对作为关系的一部分获取的记录进行排序