При связывании contentArray NSArrayController
с NSUserDefaultsController
необходимо установить флажок «Обрабатывать содержимое как составное значение» в привязке.Это стало общепринятым мнением, но что на самом деле делает опция?
Я написал небольшое тестовое приложение и заметил, что при включенной опции все contentArray
передается setValue:forKey:
источника привязки.всякий раз, когда вы редактируете свойство элемента в массиве.Когда опция отключена, изменяется только сам объект-элемент, а источник привязки не уведомляется.
Это объясняет, почему эта опция необходима для работы NSUserDefaultsController
(в противном случае она не заметит, что выредактировать что-то в массиве и никогда не сохранять изменения).Но это не объясняет, кто делает то, что по-другому точно.Контроллер массива берет на себя ответственность за эту опцию и записывает обратно массив содержимого, когда он наблюдает изменение?Если да, то как это соотносится с заявленным назначением опции, которая заключается в том, чтобы «использовать обратимый преобразователь значений, чтобы [...] временно преобразовать составные значения в меньшие части»?