Xcode, OS X: просмотр простого NSMutableArray - PullRequest
1 голос
/ 16 декабря 2011

Относительный вопрос новичка.Мое приложение имеет простой NSMutableArray из NSNumbers.(около десятка целых чисел) Я бы хотел, чтобы в моем интерфейсе отображались числа, чтобы пользователь знал, что находится в массиве.Я хочу, чтобы содержимое представления было текущим, поэтому я думаю, что я хочу привязку к массиву (или его содержимому).Есть ли простой способ сделать это?

Я думаю, я могу понять это, если я изменю свою модель так, чтобы NSMutableArray содержал пользовательский класс, имеющий установщик и получатель для объявленного свойства (следуя YouTubtorial Лукаса наNSTableView), но я думаю, что может быть более простой способ, который позволяет мне использовать мой массив NSNumbers.Я должен был бы сделать достаточное количество редактирования, если мне придется переделывать мой NSMutableArray.Спасибо ...

1 Ответ

1 голос
/ 16 декабря 2011

Вы можете использовать старые добрые номера NSN (или что-то еще) в вашей модели, нет необходимости использовать пользовательский класс модели. Однако вы можете создать подкласс NSValueTransformer, если для данных вашей модели требуется специальное форматирование для вашего представления.

В вашем NIB у вас будет NSTableView и NSArrayController.

Свяжите свойство Value столбца TableView с NSArrayController, контроллер key =ограмма расположения, ключ модели ключа пуст (поскольку вы просматриваете сам экземпляр NSNumber, а не свойство NSNumber).

Свяжите свойство Content Array NSArrayController с вашей моделью (NSMutableArray для NSNumbers). Вероятно, это свойство вашего контроллера представления или делегата приложения.

Вот и все. Вы также можете подключить кнопки к действиям add: и remove: на NSArrayController, и вы сможете добавлять и удалять элементы из вашего массива.

Кроме того, вам нужно отправлять уведомление KVO всякий раз, когда изменяется NSMutableArray. Например, скажем, ваш NSMutableArray предоставляется через свойство с именем «numbers»:

[self willChangeValueForKey:@"numbers"];
[_numbers addObject:[NSNumber numberWithInt:123]];
[self didChangeValueForKey:@"numbers"];

Вы получаете эти уведомления бесплатно, если для свойства «numbers» установлено новое значение:

self.numbers = [NSMutableArray arrayWithObject:foo];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...