以编程方式将核心数据实体中的项目放入 NSOutlineView?

Posted

技术标签:

【中文标题】以编程方式将核心数据实体中的项目放入 NSOutlineView?【英文标题】:Placing items from a Core Data entity into an NSOutlineView programmatically? 【发布时间】:2010-08-25 07:36:23 【问题描述】:

很抱歉,这似乎是一个愚蠢的问题 - 我是 Objective-C 和 Cocoa 的业余爱好者,而对于 Core Data 的使用则更不了解。

所以情况如下:我有一个 NSOutlineView,我已经使用 NSTreeController 手动填充了一些项目。我现在需要做的是获取我的核心数据实体之一中的项目并将它们附加到 NSOutlineView 的当前内容。

显然,这超出了绑定的能力,因此需要以编程方式完成。我该怎么办?我假设我需要进行一次提取,然后遍历返回的项目,将每个项目添加到大纲视图中。它是否正确?如果是这样,任何人都可以展示一个如何做到这一点的例子吗?

谢谢!

【问题讨论】:

【参考方案1】:

使用 NSPredicate 创建一个 NSFetchRequest ,它只获取那些“父级”为 nil 的对象(根/***对象)。按一些有意义的属性对它们进行排序(因为获取结果将是一个无序的集合 - 一个 NSSet)。然后实现 NSOutlineViewDataSource 以混合/混合您认为合适的信息,因为它提供给大纲。

注意:最好缓存您的结果,观察更改的上下文并在每次更改时刷新缓存。

【讨论】:

啊,我明白了。我会试一试这一切,尽管现在大部分感觉都在我头上。感谢您的帮助!

以上是关于以编程方式将核心数据实体中的项目放入 NSOutlineView?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式添加到核心数据实体(如 IB 绑定“添加”)

如何在核心数据中以编程方式创建超类/子类?

NSArrayController,以编程方式创建 CoreData 实体,以及 KVO

以编程方式设置核心数据 - NSManagedObjectContext 来自哪里?

以编程方式更改核心数据文件中的数据

如何在以编程方式创建实体时设置 NSManagedObjectModel 的配置。