我一直在研究如何使用多个实体从核心数据中填充源列表。如果我有一个实体,则可以遵循文档,并使用NSTreeController填充数据并将其绑定到NSOutlineView。
在我的特定情况下,我大约有3个硬编码组,其中每个组都与一个单独的核心数据实体相关。我试图合并它们,但是它们都与不同实体有关系,因此我无法将它们全部合并到一个核心数据实体中。理想情况下,我想将3个核心数据实体绑定到“源列表”,它们看起来如下所示(其中笔,纸和书桌都是单独的实体):
是否有人知道我将能够使用控制器来帮助管理三个实体并将其与“源列表”合并,还是最好的方法是手动填充NSOutlineView?我可以使用某种NSArrayControllers数组填充NSOutlineView吗?有没有一种方法可以覆盖NSTreeController来从三个来源中获取数据?
答案 0 :(得分:0)
作为一个实验,我创建了一个具有大纲视图和树形控制器的项目。树控制器的内容是一个字典数组,该数组控制器(在实体模式下)是出口:
treeController.content = [
["arrayController": penTreeArrayController, "name": "Pens"],
["arrayController": paperTreeArrayController, "name": "Papers"],
["arrayController": deskTreeArrayController, "name": "Desks"]
]
树控制器是NSTreeController
的子类:
override func childrenKeyPath(for node: NSTreeNode) -> String? {
if node.representedObject is NSManagedObject {
return nil
}
return "arrayController.arrangedObjects"
}
似乎可行。当我添加或删除笔时,轮廓视图会自动更新。反之亦然,我无法使用树控制器添加笔。