【发布时间】:2011-09-05 04:44:00
【问题描述】:
将NSArrayController 的contentArray 绑定到NSUserDefaultsController 时,您必须选中绑定上的“将内容作为复合值处理”复选框。这已成为传统观念,但该选项实际上有什么作用?
我编写了一个小型测试应用程序,并且可以观察到,打开该选项后,每当您编辑数组中元素的属性时,整个contentArray 都会传递给绑定源的setValue:forKey:。关闭该选项时,只修改元素对象本身,不通知绑定源。
这解释了为什么需要该选项才能使NSUserDefaultsController 工作(否则它不会注意到您在数组中编辑了某些内容并且永远不会保存更改)。但它并没有准确地解释谁在做什么不同的事情。数组控制器是否负责此选项并在观察到更改时写回内容数组?如果是这样,它与“使用可逆值转换器将 [...] 复合值暂时转换为更小的部分”选项的既定目的有何关系?
【问题讨论】:
标签: cocoa cocoa-bindings