Использование CoreData с рисованием (CGPoint)

Я хотел бы использовать Core Data для приложения для рисования, в котором пользователь рисует в UIImageView с помощью CGPoints, имеет возможность сохранять и позже загружать разные рисунки (и добавлять к ним, если пользователь желает - например, изменчивость)

Я прочитал несколько учебных пособий по базовым данным и просмотрел Руководство по программированию Core Data, но я не могу понять, что нужно сделать, чтобы сохранить рисунок в Core Data, то есть какой тип атрибута использовать (я полагаю, трансформируемый) и как именно получить CGPoints (опять же преобразование, я полагаю) для работы с управляемым объектом, который мне нужно создать.

Для рисования я использую методы:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {...}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {...}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {...}

В iPhoneCoreDataRecipes проект Apple меняет изображения на данные для Core Data — (чтобы вам не пришлось скачивать проект, их код в файле реализации для преобразования находится внизу поста). В этом случае он преобразует PNG в данные, поэтому я не уверен, как применить это к CGPoints в UIImageView. Я буду рад предоставить больше моего кода, если это необходимо.

Заранее спасибо,
Джеймс

.

.

Код рецепта Apple:

@implementation Recipe
@dynamic name, image, overview, thumbnailImage, instructions, ingredients, type, prepTime;

@end

@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];
}

@end

person jamesC    schedule 07.06.2011    source источник
comment
Вам нужно запросить координаты в CoreData или вы хотите только получить рисунок и нарисовать все точки, составляющие рисунок? Если вам нужно запросить координаты, создайте Core Data Entity, представляющий каждую CGPoint с двумя атрибутами (координатами), в противном случае создайте один объект модели для каждого чертежа с трансформируемым атрибутом и NSValue для хранения всех точек. CGPoint -> NSValue -> NSMutableArray -> (трансформируемый) атрибут NSManagedObject   -  person Martin Brugger    schedule 08.06.2011
comment
Привет Мартин, я чувствую, что могу только   -  person jamesC    schedule 09.06.2011
comment
хотите получить созданный рисунок (он будет состоять из 1-4 цветов, а может и больше) извините, если это вас запутает. Итак, я хочу сохранить то, что было нарисовано на экране, а затем получить его и либо загрузить сохраненное изображение, либо отправить его по электронной почте. (Я видел приложения, которые делают снимок экрана и добавляют его к вашим фотографиям, чтобы вы могли отправить его по электронной почте позже). Я понимаю, однако, что иногда лучше подогнать то, что я хочу, к тому, что возможно. Поэтому, если сохранить его в Core Data сложно, превратить его в изображение — это нормально. -j   -  person jamesC    schedule 09.06.2011
comment
@Martin Brugger - вы должны сделать свой комментарий ответом, чтобы его можно было принять.   -  person TechZen    schedule 10.06.2011


Ответы (1)


По совету TechZen:

Вам нужно запросить координаты в CoreData или вы хотите только получить рисунок и нарисовать все точки, составляющие рисунок?

Если вам нужно запросить координаты, создайте Core Data Entity, представляющий каждую CGPoint с двумя атрибутами (координатами), в противном случае создайте один объект модели для каждого чертежа с трансформируемым атрибутом и NSValue для хранения всех точек.

CGPoint -> NSValue -> NSMutableArray -> (трансформируемый) атрибут NSManagedObject

person Martin Brugger    schedule 10.06.2011
comment
Привет, Мартин, как указано выше, я думаю, что в этом случае лучше всего создать MOM. Однако мне непонятно: CGPoint -> NSValue -> NSMutableArray -> (трансформируемый) процесс атрибута NSManagedObject, о котором вы упоминаете, и почему это предпочтительнее образца Apple, где они выполняют преобразование изображения в данные. я не могу вызвать .image на ivar UIImage. что-то вроде theImageview.image, может быть, немного кода (или ссылка на соответствующий код/или название книги, чтобы продемонстрировать этот процесс, и у меня будет лучшее понимание). - person jamesC; 10.06.2011