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

标签 cocoa core-data

假设我有按层次结构组织的实体,其中 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/

相关文章:

ios - 如何同步使用Core Data?

swift - 如何在 Swift 中创建带有可拖动组件的时间轴 View ?

xcode - cocoa :如何通过绘画消除图像中的线条?

objective-c - 按列标题对表格进行排序并保持 NSArrayController 同步

iOS:将 View 输入映射到 NSManagedObject 的模式

ios - Restkit 映射时添加自定义值

objective-c - 从数组中获取特定长度的字符串

cocoa - Objective C打印: How to set header content?

swift - 我似乎无法解决 valueForUndefinedKey :]: whereto class is not key value coding-compliant 的错误

cocoa-touch - UITableViewCell 在显示时没有刷新?