【问题标题】:NSPredicate for fetching items from to-many relationship excluding particular related entityNSPredicate 用于从一对多关系中获取项目,不包括特定的相关实体
【发布时间】:2020-02-12 19:32:53
【问题描述】:

我有一个核心日期设置为:

Item-
id: String
name: String
projects: [Project]? (many-to-many optional relationship)

Project-
id: String
name: String
items: [Item]? (many-to-many optional relationship)

当我想从特定项目中获取所有项目时,我使用这个谓词:
NSPredicate(format: "ANY projects.id == %@", project.id)

现在,我必须获取所有与特定项目无关的项目。 为此,我正在尝试使用以下谓词:
NSPredicate(format: "(projects.@count == 0) OR (NONE projects.id == %@)", project.id)

这个谓词的问题是它不能正确处理与多个项目相关的项目。

【问题讨论】:

    标签: ios swift core-data nspredicate


    【解决方案1】:

    我建议使用 SUBQUERY 而不是 Apple 提供的 ANY、ALL、NONE 运算符(尤其要避免使用 NONE)。

    NSPredicate(format: "SUBQUERY(projects, $p, $p.id == %@).@count == 0", project.id)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      相关资源
      最近更新 更多