以核心数据方式将项目从核心数据实体放入NSOutlineView?

时间:2010-08-25 07:36:24

标签: objective-c cocoa core-data nsoutlineview nstreecontroller

很抱歉,如果这看起来像个愚蠢的问题 - 对于Objective-C和Cocoa来说,我是一个业余爱好者,在核心数据使用方面,我的知识更少。

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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