NSArrayController не работает с NSMutableDictionary для NSTableView - PullRequest
3 голосов
/ 11 мая 2010

Я пытаюсь отобразить содержимое в NSTableView, используя NSMutableArrayController записей NSMutableDictionary.

Я следовал инструкциям ниже:

  1. В классе делегата приложения я создал объект NSMutableArray с именем 'geniuses' и сохранил некоторые объекты NSMutableDictionary с ключами: 'geniusName' и 'domain'.

  2. Я взял объект NSArrayController в IB, связал его свойство содержимого контроллера с классом делегата приложения и установил путь к ключу модели в 'geniuses'. В панели инспектора атрибутов установите режим как класс и имя класса как NSMutableDictionary. добавленной ключи: 'geniusName' и 'domain' к нему.

  3. В IB я взял объект табличного представления. Связал его свойство содержимого с контроллером массива, путь ключа контроллера установлен как упорядоченные объекты. Свойство связанного значения его первого столбца для контроллера массива, путь ключа контроллера, заданный как упорядоченные объекты, путь ключа модели, заданный как 'geniusName'. Свойство связанного значения его второго столбца для контроллера массива, путь ключа контроллера, заданный как упорядоченные объекты, путь ключа модели, заданный как 'geniusName'.

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

Может кто-нибудь подсказать, где я могу ошибаться?

Спасибо

Miraaj

Ответы [ 2 ]

1 голос
/ 12 мая 2010

Полагаю, у вас есть переменная экземпляра, объявленная для изменяемого массива:

NSMutableArray *myObjects;

Но вы на самом деле создали массив?

Переменная является просто контейнером для указателя на объект массива. Вам все еще нужно создать объект массива и поместить его указатель в переменную, возможно, в методе init или initWithCoder: вашего делегата приложения.

Забыть об этом - частая причина проблемы, которую вы видите. До тех пор, пока вы не создадите массив, переменная экземпляра содержит nil, и все попытки поместить вещи в несуществующий массив или извлечь их из него - это сообщения на nil, которые ничего не делают.

1 голос
/ 11 мая 2010

Я не могу проверить ваш код прямо сейчас. Как вы заполняете массив genuises? Вы должны реализовать методы доступа с кодированием значения ключа и использовать их при вставке или удалении данных из массива для генерации уведомлений KVO.

...