當將NSArrayController
的contentArray綁定到NSUserDefaultsController
時,您必須檢查綁定上的「處理內容作爲複合值」複選框。這已經成爲傳統觀點,但這個選擇實際上做了什麼?可可綁定的NSHandlesContentAsCompoundValueBindingOption做了什麼?
我寫了一個小測試應用程序,可以觀察到打開了選項後,只要編輯數組中某個元素的屬性,就會將整個contentArray
傳遞給綁定源的setValue:forKey:
。當選項關閉時,只有元素對象本身被修改,綁定源不會被通知。
這解釋了爲什麼需要該選項才能使NSUserDefaultsController
工作(否則它不會注意到您已經編輯了數組中的某些內容並從不保存更改)。但它並不能解釋誰在做什麼不同的事情。數組控制器是否負責此選項並在觀察到更改時寫回內容數組?如果是這樣的話,它與選擇的目的是「如何使用可逆值變換器將混合值暫時轉換成小塊」。