2014-02-14 4 views
1

Я хочу, чтобы несколько NSPopUpButtons синхронизировались с одним и тем же объектом модели. Я просто знаком с привязками и реализовал следующую схему.Может ли несколько NSArrayControllers управлять одним и тем же массивом?

Controllers

Это ужасная идея?

Здесь каждый NSPopUpButton имеет свой собственный NSArrayController. Каждый NSArrayController получает свой контент из того же источника данных NSMutableArray в моем слое модели.

Я заметил некоторые странные проблемы при добавлении и удалении объектов в массив моделей (массив животных в приведенном выше примере) и задавался вопросом, насколько жизнеспособным является этот подход или существует ли лучший способ синхронизировать несколько представлений с той же моделью?

+0

Боковое задание: выберите тот, который не подходит другим животным. Извините, не смог удержаться. –

+0

Do not ever cow man :) –

ответ

1

Вы должны быть в порядке, если вы сохраняете свои изменения в модели в основном потоке.

Каждый NSArrayController будет прослушивать уведомления KVO из вашего NSMutableArray и соответственно обновит их.

Если вы измените массив через один из NSArrayController, он обновит ваш NSMutableArray, который снова вызовет уведомление KVO, которое будет обнаружено двумя другими NSArrayControllers.

Важно, чтобы вы обновили свой NSMutableArray в соответствии с KVO. А именно, вы должны использовать прокси-сервер массива, возвращаемый mutableArrayValueForKey:

+0

Я не обновлялся с помощью -mutableArrayValueForKey :, я просто выбирал один из контроллеров массивов и добавлял/удалял объекты. Я попытаюсь напрямую разобраться с моделью и посмотреть, поможет ли она. –