Сохранение UIImage в основные данные;проблема с NSValueTransformers - PullRequest
0 голосов
/ 01 августа 2011

Я пытаюсь сохранить снимок, сделанный камерой iphone, в основные данные.

У меня UIImage взят с камеры. После этого я не знаю, что мне делать.

Каждое изображение связано с вопросом вопроса. Теперь у объекта вопроса нет поля изображения. Он имеет отношение к объекту Image. Это связано с тем, что с каждым вопросом может быть связано множество UIImages.

Итак, я создал вопрос сущности. Теперь, как мне сохранить UIImage в основных данных в сущности Image, и как мне соединить его с сущностью вопроса? Нужно ли создавать объект Image? Я создал ImageToDataTransformer, но я не знаю, кто это называет - основные данные или я? В моем xcdatamodel у меня есть объект Image. Я положил в ImageToDataTransformer там.

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

Спасибо

Question *question = [NSEntityDescription insertNewObjectForEntityForName:@"Question" inManagedObjectContext:managedObjectContext];
question.date = [NSDate date];

ImageToDataTransformer *transformer = [[ImageToDataTransformer alloc]init];
NSData *imageData = [transformer transformedValue:mm];//mm is an id, but it is the UIImage saved from the camera.
question.image = imageData;

1 Ответ

1 голос
/ 02 августа 2011

Я бы посоветовал вам создать сущность QuestionImage (или что-то с именем схожие) и присвоить ей единственный строковый атрибут с именем path. Этот путь будет хранить место на диске, где вы ранее записали свое изображение. Помещение изображения в папку документов гарантирует, что оно не будет очищено ни при каких дампах кэша. В реализации вашей сущности QuestionImage (или как вы ее называете) вы можете реализовать prepareForDeletion и удалить изображение с диска, чтобы убедиться, что у вас нет никаких не ссылающихся изображений.

Хранение двоичных данных в Core Data может быть проблематичным, и его следует по возможности избегать.

...