Правило для хранения данных изображения в основных данных заключается в следующем:
1 MB Store на диске и ссылается на путь в основном хранилище данных.
Вы можете использовать трансформируемый тип данных, чтобы сохранить NSImage непосредственно в основные данные. На самом деле вы можете использовать трансформируемый тип данных для хранения всего, что реализует Nscoder протокол.
Лично я не преобразую его в Cgimageref, как вы можете потерять много информации таким образом.
Поднастройка: Вы можете в конечном итоге огромным, трудно обрабатывать базу данных SQLite. Вы действительно хотите, чтобы ваши пользователи загружали несколько файлов MB за один шаг к серверу? Что вы делаете, если соединение Celluar вырывается в течение нескольких секунд?
Я думаю, что это будет лучше, если вы используете основные данные для управления вашими изображениями и их состоянием загрузки (загружены: Да или Нет). Таким образом, вы можете загрузить изображения, когда он подходит для вашего рабочего процесса приложения. Хорошо, это будет длиться немного дольше, из-за многих соединений. Но это чистый подход, я думаю, что ...
Когда вы думаете об iTunes, когда говорите о резервных копиях: ваша локальная папка «Документы документов iPhone» в любом случае синхронизируется.
Вы должны иметь a, тогда вы можете сделать что-то вроде этого:
CGImageRef imageRef = uiImage.CGImage;
CGDataProviderRef dataProvider = CGImageGetDataProvider(imageRef);
NSData *imageData = (NSData*)CGDataProviderCopyData(dataProvider);
[managedObject setValue:imageData forKey:@"data"];
Где managedObject - это ваш объект образа ядра данных, а @"данные" - это имя двоичного свойства. Вам также может понадобиться сохранить формат изображения, чтобы десериализовать его позже.
Другой вариант - сохранить изображение на диск и сохранить путь к нему в основных данных.