cocoa - NSOutlineView 与核心数据驱动的绑定(bind)

标签 cocoa core-data cocoa-bindings nsoutlineview nstreecontroller

我有一个 NSOutlineView 作为我的应用程序的源列表,我的数据模型是使用 Core Data 完成的。我想使用绑定(bind)(如果可能)将这些东西粘合在一起,如下所示:

我的模型中有三个主要实体,为了举例,我们将它们称为“商店”、“汽车”和“人”。

我的目标是让大纲 View 有 3 个“组”(可扩展节点,如 iTunes 中的播放列表),每个组代表并列出我的一个实体,而且我的窗口底部有三个按钮到“添加商店”、“添加汽车”等,我希望将其连接起来以执行该操作。

到目前为止,在我的窗口 Nib 中,我有一个 TreeController,它绑定(bind)到窗口 Controller 的 NSManagedObjectContext 实例,但我不知道如何从 TreeController 正确绑定(bind)和填充大纲 View 。

这可以通过绑定(bind)实现吗?我看过一个教程,其中创建了第二个托管对象模型,其中包含大纲节点的实体,但该文章的一些评论说这是一个坏主意。我不太确定如何继续,任何帮助都会很棒!

最佳答案

尝试Cocoa Bindings Programming topics: Providing Controller Content section

我所做的是为我的实体创建自定义类,并向它们添加 isLeaf 属性。对于顶层(商店、汽车、人员),我返回no。对于叶节点(汽车、人等),我返回YES

顶层需要与叶节点有一对多关系,我称之为子节点

在 Interface Builder 中,我将 NSTreeController 的模式设置为 Entity,名称:Groups。它绑定(bind)到 ManagedObjectContext。在Key Paths中,我将Children属性设置为children,将Leaf设置为isLeaf >。

关于cocoa - NSOutlineView 与核心数据驱动的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1954301/

相关文章:

cocoa - 运行 NSRunLoop 导致主线程挂起

ios - Swift:如何处理 Chats 类

iPhone CoreData 查询

objective-c - slider 上的值绑定(bind)无法正确更新

c++ - 如何将 C++ 对象绑定(bind)为 objective-c 中的属性?

objective-c - Interface Builder 中可能存在错误吗?

objective-c - MacOS 应用程序窗口内的文件管理器

objective-c - Aaron Hillegass::[NSArrayController add] = insertObject 方法

swift - 如何向 NSTableViewDelegate 协议(protocol)添加方法?

ios - 核心数据 : How to update value of type NSSet