当将NSArrayController
的contentArray绑定到NSUserDefaultsController
时,您必须检查绑定上的“处理内容作为复合值”复选框。这已经成为传统观点,但这个选择实际上做了什么?可可绑定的NSHandlesContentAsCompoundValueBindingOption做了什么?
我写了一个小测试应用程序,可以观察到打开了选项后,只要编辑数组中某个元素的属性,就会将整个contentArray
传递给绑定源的setValue:forKey:
。当选项关闭时,只有元素对象本身被修改,绑定源不会被通知。
这解释了为什么需要该选项才能使NSUserDefaultsController
工作(否则它不会注意到您已经编辑了数组中的某些内容并从不保存更改)。但它并不能解释谁在做什么不同的事情。数组控制器是否负责此选项并在观察到更改时写回内容数组?如果是这样的话,它与选择的目的是“如何使用可逆值变换器将混合值暂时转换成小块”。