2011-12-02 42 views
5

我从iOS的到来,试图建立最简单的主从OS X应用程序可能的,但我有一个很难过渡主从应用程序。更具体地说,我无法真正了解如何使用NSArrayController将Core Data与NSTableView集成;创建使用NSTreeController,NSArrayController的和核心数据

的应用目前看来这样的: Contacts app

我的数据模型是这样的:

enter image description here

正如你可以看到它是非常简单的。我希望能够在左侧的源列表中选择一个组,然后在表格视图右侧显示包含人员的所有人员。

我已经设法将NSOutlineView连接到一个简单的NSArray,但是使用NSTreeController将它连接到所有Group对象并使其全部可编辑的最佳方式是什么?

回答

3

添加一个NSArrayController并将其连接到您的Group实体(称为GroupController)。选择左侧源视图的表格列,然后转到绑定检查器。选中Value部分,并通过选中框将其绑定到GroupController。通过将Controller Key设置为arrangedObjectsModel Key Pathtitle来完成绑定。

添加另一个NSArrayControllerPersonsController)。转到绑定检查器并选择名为Content Set的部分。从下拉列表中选择您的GroupController并选中复选框以将PersonsController绑定到GroupController。完成设置Controller KeyselectionModel Key Pathpersons结合。这将检索连接到所选组的人到PersonsController

然后,您可以绑定在你的窗口到PersonsController的右手边表视图。将表的每一列连接到PersonsController(firstName,lastName)。

可编辑可以在你的个人资料实体表视图的列级设置。

编辑:哎呀,刚才重读你的问题,看到你想要一个NSTreeController。我认为你可以用一个NSTreeController替换GroupController - 这是一个普通的NSArrayController。我在您的Group实体中看不到任何层次结构。 Here是一个很好的教程,其代码为支持具有层次结构的实体的树控制器。

EDIT2:另一个很好的教程是苹果公司的SourceView例子。它显示了如何使用NSTreeController设置源视图。它的数据源绑定到基于文件的NSDictionary,但使用其他教程和我的答案中所需的绑定的描述,你应该能够得到这个工作。

+0

嗯,我不一定需要一个NSTreeController,但我想使用一个源列表来显示我的Group对象,因为我想让他们上面的“GROUPS”标题。这可能使用NSArrayController吗?本教程没有提到任何关于此的内容。 – Rits

+0

不,AFAIK我知道你必须使用NSOutlineView和一个NSTreeController。我使用该教程构建了我的主/细节应用程序,效果很好。该教程实际上使用了两个控制器:一个NSArrayController检索顶层项目(使用谓词parent == nil),然后使用NSTreeController来显示实际的树。 – Roger

相关问题