Базовые данные, привязки NSTableColumn и пользовательские NSCell - PullRequest
2 голосов
/ 24 октября 2009

Я пытаюсь отобразить массив NSManagedObjects в NSTableView, используя пользовательский NSCell, который способен правильно рисовать управляемый объект.

В этом отношении один столбец моего NSTableView связан с arrangedObjects из NSArrayController. Я не использую какие-либо ключевые пути к объекту.

У меня сложилось впечатление, что мой подкласс NSCell получит сообщение setObjectValue:, когда табличное представление хочет нарисовать определенный элемент, но этого не происходит. Но это даже не сработает, поскольку NSManagedObjects не соответствует протоколу Copying.

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

Любое понимание будет оценено.

Ответы [ 2 ]

3 голосов
/ 27 октября 2009

Вам необходимо привязать к определенному свойству связанных объектов. Если вам действительно нужна одна ячейка для рисования всего значения, то вам следует привязать к objectID, как предлагает Мартин, но вместо повторной выборки в коде рисования ячейки вы можете использовать метод делегата -tableView:willDisplayCell:forTableColumn:row: для установки объекта в качестве значения для пользовательского свойства ячейки из контроллера массива, избегая как копирования, так и извлечения.

0 голосов
/ 25 октября 2009

Мне удалось заставить его работать, связав столбец таблицы с ключом objectID модели управляемого объекта (что соответствует NSCopying). Затем ячейка получает фактический NSManagedObject, используя идентификатор. Это работает как шарм!

...