多个NSArrayControllers可以控制同一个数组吗?

时间:2014-02-14 14:16:41

标签: cocoa cocoa-bindings nsarraycontroller nspopupbutton

我想让几个NSPopUpButtons与同一个模型对象保持同步。我刚刚熟悉绑定并实现了以下方案。

Controllers

这是一个糟糕的主意吗?

这里每个NSPopUpButton都有自己的NSArrayController。每个NSArrayController从我的模型层中的相同 NSMutableArray数据源获取其内容。

我在模型数组(上例中的动物数组)中添加和删除对象时发现了一些奇怪的问题,并且想知道这种方法的可行性,或者是否有更好的方法可以保持多个视图同步同一型号?

1 个答案:

答案 0 :(得分:1)

只要您在主线程中保留对模型的更改,就可以这样做。

每个NSArrayController都会侦听来自NSMutableArray的KVO通知,并会相应地自行更新。

如果您通过其中一个NSArrayController更改数组,它将更新您的NSMutableArray,这将再次触发将被其他两个NSArrayControllers捕获的KVO通知。

以符合KVO的方式更新NSMutableArray非常重要。即您应该使用mutableArrayValueForKey:

返回的数组代理