将NSArrayController
的contentArray绑定到NSUserDefaultsController
时,您必须选中绑定上的“将内容作为复合值处理”复选框。这已成为传统智慧,但该选项实际上做了什么?
我写了一个小测试应用程序并且可以观察到,在打开选项的情况下,只要编辑数组中元素的属性,整个contentArray
就会传递给绑定源setValue:forKey:
。当该选项关闭时,仅修改元素对象本身,并且不通知绑定源。
这解释了为什么需要使NSUserDefaultsController
工作的选项(否则它不会注意到您已经在数组中编辑了某些内容而从未保存更改)。但它并没有解释谁在做什么不同的确切。阵列控制器是否负责此选项并在观察到更改时写回内容数组?如果是这样,它如何与选项的既定目的相关,即“使用可逆值变换器将复合值临时转换成较小的部分”?
答案 0 :(得分:2)
这是我尝试回答:
contentObject
contentArray
,contentSet
或valueForKeyPath:
绑定指定的原始内容对象
transformedValue:
方法inverseTransformedValue:
setValue:forKeyPath: