Сохранение фотографии в основных данных - PullRequest
2 голосов
/ 17 декабря 2011

Я пытаюсь сделать это наиболее эффективным способом. Вспомните встроенную адресную книгу Apple на iPhone - вот что я пытаюсь скопировать здесь.

Одна сущность, Person и несколько атрибутов, но каждая Person может иметь одну фотографию.

Каков наилучший способ сохранить фотографию для объекта?

Ответы [ 3 ]

11 голосов
/ 17 декабря 2011

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

8 голосов
/ 17 декабря 2011

Существует отличный новый способ хранения двоичных данных с Core Data в iOS 5.0+ и Mac OS X 10.7+. NSAttributeDescription теперь имеет свойство BOOL с именем allowsExternalStorage.

Из документации ...

Если это значение YES, соответствующий атрибут может быть сохранен в файл, внешний для самого постоянного хранилища.

Это означает, что двоичные данные будут сохранены на диске, а ссылка на этот элемент будет автоматически сохраняться в постоянном хранилище в Core Data. В редакторе модели XCode это можно включить, просто отметив опцию в представлении инспектора для этого атрибута.

NSAttributeDescription Inspector - Allows External Storage


Для версий до 5.0 вам необходимо сохранить изображение в папке «Документы» пользователя, а затем добавить URL-адрес файла в объект модели перед сохранением.

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

В файле модели управляемого объекта (.momd) в XCode добавьте атрибут к сущности Person и установите для его типа значение «Transformable». В трансформируемом атрибуте вы можете хранить любой тип объекта, который соответствует протоколу NSCoding и, к счастью, UIImage является одним из них. Для получения дополнительной информации о NSCoding см. Документацию Apple: http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Protocols/NSCoding_Protocol/Reference/Reference.html#//apple_ref/occ/intf/NSCoding

...