Core data 在同一NSOutlineView中显示不同的NSManagedObject实体

Core data 在同一NSOutlineView中显示不同的NSManagedObject实体,core-data,nsoutlineview,Core Data,Nsoutlineview,基本上我有三个不同的核心数据实体A、B、C,A包含一组B,B包含一组C。然而,这三个实体彼此有很大的不同,它们没有访问彼此的子对象或要在视图中显示的值的通用方法 我想在NSN大纲视图中展示这三个世纪。可能还有其他解决方案,但我提出了两种不同的解决方案: 实现NSOutlineViewDataSource协议并以不同方式处理每个实体 使用类别合并类,并为NSOutlineView添加常用的临时方法/属性。这些方法/属性从模型实体的属性获取其实际值 我选择了第二个选项,并为子项和显示值添加了gett

基本上我有三个不同的核心数据实体A、B、C,A包含一组B,B包含一组C。然而,这三个实体彼此有很大的不同,它们没有访问彼此的子对象或要在视图中显示的值的通用方法

我想在NSN大纲视图中展示这三个世纪。可能还有其他解决方案,但我提出了两种不同的解决方案:

实现NSOutlineViewDataSource协议并以不同方式处理每个实体

使用类别合并类,并为NSOutlineView添加常用的临时方法/属性。这些方法/属性从模型实体的属性获取其实际值

我选择了第二个选项,并为子项和显示值添加了getter。但是,通过这种方式,键值观察不再起作用,模型中的更改也不会反映到视图中。我明白为什么,但我不知道如何正确解决这个问题。我在想一种方法来通知实际的模型值更改,并将它们转发给视图

是否有任何简单的方法来转发这些通知,或者我应该考虑其他的选择吗?
简言之,我需要在NSOutlineView中显示不同类型的实体,我不想弄乱模型。

你不能用关系A->B->C获取对象A并在大纲视图中显示它们吗?

经过一些尝试和错误,我发现创建自定义数据源真的很简单,于是决定选择第一个。此外,通过拖放支持,这种方式感觉更加自然


唯一的问题是outlineView:setObjectValue:forTableColumn:byItem:需要为其指定列标识符引用。我觉得无向依赖总是应该避免的,但与使其正常工作相比,这是一件小事。

问题在于对象不是同质的。例如,A将包含displayOrder属性int,但B和C将包含number属性。