Вопрос

Я только что понял, что есть два способа использовать NSArrayController.

Привяжите контроллер к массиву and и добавьте объекты в массив.Или вообще не используйте никакой массив и добавляйте объекты непосредственно в контроллер.

[racesArray addObject: [[Race alloc] initWithName:@"Human"] ];

Или

[myRacesController addObject: [[Race alloc] initWithName:@"Human"] ];

Поскольку обе версии отлично подходят для моих нужд, я задаюсь вопросом, как правильно их использовать.Я предполагаю, что использование массива могло бы быть лучше, но поскольку NSArrayController также способен хранить данные, почему я не должен использовать эту функцию?

Это было полезно?

Решение

Не общайтесь напрямую с массивом, как вы делаете в своем первом примере.Контроллер массива не узнает о ваших изменениях, если вы явно не разместите уведомления KVO о них, что является проблемой, и легко забыть это сделать.

Способ, который я рекомендую, - это привязать контроллер массива, а затем реализовать Методы доступа к массиву, совместимые с KVC для вашего свойства и используйте их везде в вашем приложении (за исключением класса init и dealloc методы).

Таким образом, ваш объект может изменять свой собственный массив без необходимости явно публиковать уведомления KVO или знать о контроллере массива.

Другие советы

Оба способа хороши.Если вы не предоставите ему массив, NSArrayController поддерживает свой собственный.

NSArrayController совместим с KVO для привязки к элементам пользовательского интерфейса.Он также содержит дополнительные метаданные для массива объектов, таких как selectedObject.Эти удобные объекты недоступны с NSArray.NSArray - это просто массив с обычными операторами массива и методами, определенными в нем.Используйте его, если вам не нужно привязываться к элементам пользовательского интерфейса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top