Хранение NSImage в базовой модели данных - PullRequest
7 голосов
/ 01 марта 2009

Как правильно хранить NSImage в базовой модели данных? Я предполагал, что добавление атрибута к сущности и присвоение ему типа "Binary" должно работать, но он не работает. У меня есть таблица со столбцом NSImageCells, и она ничего не показывает.

Ответы [ 4 ]

10 голосов
/ 02 марта 2009

Если вы можете работать в 10.5+, самый простой способ - сохранить NSImageRep s для изображения в атрибуте «Transformable». По умолчанию преобразуемые атрибуты используют NSCoding для архивирования своих значений при установке и разархивирования при доступе. Это избавляет вас от необходимости писать собственные методы получения / установки. Если вы хотите получить фантазию, вы можете написать пользовательский NSValueTransformer, который преобразует изображение в полученную версию его представлений и наоборот при получении. Если вы используете 10.4, то вам нужно написать собственные методы получения / установки (см. Документы Apple по созданию Нестандартных постоянных атрибутов . Вы можете получить повторения изображения с помощью отправки NSImage a * 1006. * сообщение.

Если вы хотите отображать изображения в пользовательском интерфейсе через привязки, вам также следует прочитать раздел Отображение изображений с использованием привязок в разделах «Программирование привязок какао».

8 голосов
/ 01 марта 2009

Это не отвечает на точный вопрос, который вы задали, но в зависимости от того, сколько изображений вы храните, может быть более эффективным сохранять только пути или URL-адреса к изображениям, сохраненные в вашем собственном местоположении, и загружать их по мере необходимости.

7 голосов
/ 01 марта 2009

Вам нужно будет создать его представление NSData.

Посмотрите на Нестандартные постоянные атрибуты . Особенно в разделе «Трансформируемые атрибуты» и «Пользовательский код», если вас это не устраивает.

1 голос
/ 20 мая 2011

Вот действительно простая реализация

http://objectivesheep.com/blog/nsimage_coredata/

...