Ale*_*erg 6 cocoa cocoa-bindings
将NSArrayControllercontentArray 绑定到an时NSUserDefaultsController,必须选中绑定上的"Handles Content As Compound Value"复选框.这已成为传统智慧,但该选项实际上做了什么?
我写了一个小测试应用程序并且可以观察到打开选项后,只要编辑数组中元素的属性,整个contentArray就会传递给绑定源setValue:forKey:.选项关闭时,仅修改元素对象本身,并且不通知绑定源.
这解释了为什么需要选项才能完成NSUserDefaultsController工作(否则它不会注意到您已经编辑了数组中的某些内容而从未保存更改).但它并没有解释谁在做什么不同的确切.阵列控制器是否负责此选项并在观察到更改时写回内容数组?如果是这样,它如何与选项的既定目的相关,即"使用可逆值变换器将复合值暂时转换成较小的部分"?
这是我尝试回答的:
contentObject或绑定contentArray指定的原始内容对象contentSet是使用 NSUserDefaultsController 检索的valueForKeyPath:transformedValue:方法进行转换inverseTransformedValue:setValue:forKeyPath: