【问题标题】:NSPredicate count > 0 on many to many to many relationshipNSPredicate count > 0 on many to many to many relationship
【发布时间】:2016-03-22 07:04:42
【问题描述】:

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

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

关于如何正确编写此查询的任何想法?

【问题讨论】:

  • 如果我这样做了,我会取出所有的 Entity As,然后forin 过滤掉正确的。

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


【解决方案1】:

“ANY”运算符不适用于嵌套的一对多关系, 因此你需要一个“子查询”(不幸的是不是很好 记录)。像这样的东西应该可以工作:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 2019-04-20
    • 2018-02-26
    相关资源
    最近更新 更多