Cocoa 什么是可可装订';s NShandlesContentsCompoundValueBindingOption的具体操作是什么?
将Cocoa 什么是可可装订';s NShandlesContentsCompoundValueBindingOption的具体操作是什么?,cocoa,cocoa-bindings,Cocoa,Cocoa Bindings,将NSArrayController的contentArray绑定到NSUserDefaultsController时,必须选中绑定上的“将内容处理为复合值”复选框。这已成为传统智慧,但这一选择究竟起到了什么作用 我编写了一个小的测试应用程序,可以观察到,只要打开该选项,无论何时编辑数组中元素的属性,整个contentArray都会传递给绑定源的setValue:forKey:。禁用该选项时,仅修改元素对象本身,而不通知绑定源 这解释了为什么需要使用该选项才能使NSUserDefaultsCon
NSArrayController
的contentArray绑定到NSUserDefaultsController
时,必须选中绑定上的“将内容处理为复合值”复选框。这已成为传统智慧,但这一选择究竟起到了什么作用
我编写了一个小的测试应用程序,可以观察到,只要打开该选项,无论何时编辑数组中元素的属性,整个contentArray
都会传递给绑定源的setValue:forKey:
。禁用该选项时,仅修改元素对象本身,而不通知绑定源
这解释了为什么需要使用该选项才能使
NSUserDefaultsController
正常工作(否则它不会注意到您在数组中编辑了某些内容,并且从不保存更改)。但这并不能解释到底是谁在做不同的事情。阵列控制器是否负责此选项,并在观察到更改时写回内容阵列?如果是这样,它与选项“使用可逆值转换器将[…]复合值临时转换为更小的片段”的规定目的有何关系?此处对消息流进行了很好的解释:
以下是我试图回答的问题:
valueForKeyPath:
从NSUserDefaultsController检索contentObject
、contentArray
或contentSet
绑定指定的原始内容对象transformedValue:
方法进行转换inverseTransformedValue:
setValue:forKeyPath: