NSPredicate 用于从一对多关系中获取项目,不包括特定的相关实体
Posted
技术标签:
【中文标题】NSPredicate 用于从一对多关系中获取项目,不包括特定的相关实体【英文标题】:NSPredicate for fetching items from to-many relationship excluding particular related entity 【发布时间】: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)
这个谓词的问题是它不能正确处理与多个项目相关的项目。
【问题讨论】:
【参考方案1】:我建议使用 SUBQUERY 而不是 Apple 提供的 ANY、ALL、NONE 运算符(尤其要避免使用 NONE)。
NSPredicate(format: "SUBQUERY(projects, $p, $p.id == %@).@count == 0", project.id)
【讨论】:
以上是关于NSPredicate 用于从一对多关系中获取项目,不包括特定的相关实体的主要内容,如果未能解决你的问题,请参考以下文章