0

基本上我有三个不同的核心数据实体(A, B, C)并A包含一组Bs 和B一组Cs。然而,这三个实体彼此完全不同,它们没有共同的方法来访问彼此的孩子或要在视图中显示的值。

我试图在 NSOutlineView 中显示这三个实体。可能还有其他解决方案,但我想出了两个不同的解决方案:

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

  2. 将类与类别合并并添加通用(瞬态)方法/属性以供 NSOutlineView 使用。这些方法/属性从模型实体的属性中获取它们的实际值。

我选择了第二个选项,并为子项和显示值添加了 getter。但是,这样一来,Key-Value Observing 不再起作用,模型中的更改也不会反映到视图中。我明白为什么,但我不确定如何以正确的方式解决这个问题。我正在考虑某种方式来通知实际模型值的更改并将它们转发到视图。

是否有任何简单的方法可以转发这些通知,或者我应该考虑其他替代方法吗?

简而言之,我需要在 NSOutlineView 中显示不同类型的实体,并且我不想弄乱模型。

4

2 回答 2

0

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

于 2011-03-29T12:01:03.163 回答
0

经过一些试验和错误,我发现创建自定义数据源真的很简单,并决定使用第一选择。此外,通过拖放支持,这感觉更加自然。

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

于 2011-04-18T19:34:49.023 回答