【发布时间】:2020-09-27 16:42:07
【问题描述】:
我有两个核心数据实体:Parent 和 Child。
Parent 有一个属性 children 用于子集
每个Child 都有一个parent 属性将其链接到其父级,以及一个age 属性。
(我的数据比这更复杂,但这与问题无关)
我有一个NSPredicate 用于选择一组父母的Parent 实体和一个NSPredicate 用于根据年龄选择实体的Child 实体
我想要做的是为FetchRequest<Child> 构造一个NSPredicate,它返回满足两个单独谓词的Child 实体集
我知道我可以检索满足其谓词 ('parents') 的 Parent 实体数组,然后有一个类似于 NSPredicate(format: "parent IN %@", parents) 的子谓词,并将其包含在复合 AND 与子谓词中,但是有可能是数百名父母遇到他们的谓词,而在我看来,有两个单独的查询是一个但不重要的事情。
FetchRequest 必须是 FetchRequest<Child>,因为它用于 SwiftUI 视图,所以我不能只构建结果数组。
我怀疑我可以使用 SUBQUERY 谓词来做到这一点,但我不知道如何将父谓词嵌入到 SUBQUERY 中。我在Parent 实体的谓词字符串中收到类似Problem with subpredicate TRUEPREDICATE 的错误。
希望这是有道理的?有什么想法或建议吗?
谢谢
【问题讨论】:
-
父实体的谓词是什么?
-
它是由一组用户输入标准生成的谓词,因此它会有所不同。在我询问的查询中,我通过一个返回 NSPredicate 的函数访问它。
-
每个孩子只有一个父母?
-
是的,它是一个 -> 许多(父母 -> 孩子)
标签: swift core-data nspredicate