Как сохранить UIImages и NSArrays в файле CoreData?Какой тип атрибута использовать? - PullRequest
0 голосов
/ 01 апреля 2011

Я только начинаю базовые данные, и я хотел знать, какой тип атрибута мне нужно использовать, чтобы я мог хранить UIImage и NSData в «файле» CoreData. Под этим я подразумеваю то, что мне нужно, чтобы установить тип атрибута в.

Ответы [ 3 ]

3 голосов
/ 01 апреля 2011

Для изображения создайте тип Transformable, а затем добавьте в файл .m следующее:

@implementation ImageToDataTransformer

+ (BOOL)allowsReverseTransformation {
    return YES;
}

+ (Class)transformedValueClass {
    return [NSData class];
}

- (id)transformedValue:(id)value {
    NSData *data = UIImagePNGRepresentation(value);
    return data;
}

- (id)reverseTransformedValue:(id)value {
    UIImage *uiImage = [[UIImage alloc] initWithData:value];
    return [uiImage autorelease];
}
3 голосов
/ 01 февраля 2012

UIImage можно сохранить как Transformable без написания дополнительного кода, установив для преобразователя значение NSUnarchiveFromDataTransformerName .

См. Объяснение на http://ootips.org/yonat/uiimage-in-coredata/.

2 голосов
/ 01 апреля 2011

Тип «Двоичные данные», который, как я считаю, заканчивается как тип NSData в свойстве объекта.

Однако для UIImage вы не можете просто сохранить его в базе данных как есть -сначала вам придется преобразовать его в объект NSData (преобразовать в файл JPG или PNG) или сохранить UIImage на диск (в формате PNG или JPG), а затем сохранить путь к файлу в базе данных.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...