Использование CoreData с рисунком (CGPoint) - PullRequest
1 голос
/ 08 июня 2011

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

Я прочитал некоторые учебники по сердцевинным данным и просмотрел Руководство по программированию базовых данных , но я не могу понять, что нужно сделать, чтобы сохранить чертеж в 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

1 Ответ

1 голос
/ 10 июня 2011

По рекомендации TechZen:

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

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

CGPoint -> NSValue -> NSMutableArray -> (преобразуемый) атрибут NSManagedObject

...