gpt4 book ai didi

cocoa - 获取核心数据实体,但不获取子实体

转载 作者:行者123 更新时间:2023-12-03 16:12:33 26 4
gpt4 key购买 nike

假设我有按层次结构组织的实体,其中 Parent 是根实体,ChildParent 的子类。我想设置一个 NSArrayController 来仅获取 Parent 的实体,而不是 Child

如果您在 Interface Builder 中将数组 Controller 的实体名称设置为 Parent,它将获取所有 ParentChild 实体。我最初尝试在 Interface Builder 中将数组 Controller 的获取谓词设置为:

entity.name == "Parent"

这适用于 XML 存储,但当我切换到 SQLite 存储时,它不再起作用。我收到以下错误:

keypath entity.name not found in entity <NSSQLEntity xxx>

作为解决方法,我在 awakeFromNib 中设置一个过滤谓词(具有与上面相同的 entity.name 谓词)以仅过滤父实体。显然,一旦实体进入内存,该谓词就有效,但您不能在 SQL 支持的获取谓词中使用它。

有没有办法使用与 SQLite 存储一起使用的获取谓词来仅获取 Parent 实体,而不获取 Child 实体?引入您只会用过滤谓词忽略的实体似乎很浪费。

最佳答案

Leopard 正是出于此目的向 NSFetchRequest 引入了 includesSubentities 属性。您必须对 NSObjectController 或 NSArrayController 进行子类化,以通过其 defaultFetchRequest 属性提供它将使用的获取请求,或者通过覆盖其 -fetchWithRequest:... 方法。

关于cocoa - 获取核心数据实体,但不获取子实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/298013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com