2011-06-07 2 views
1

Je voudrais utiliser des données de base pour une application de dessin où l'utilisateur dessine un UIImageView en utilisant CGPoints a la possibilité de sauvegarder et de charger plus tard différents dessins (et de les ajouter si le les désirs de l'utilisateur - par exemple la mutabilité)Utiliser CoreData avec dessin (CGPoint)

J'ai lu quelques tutoriels de données à noyau et j'ai parcouru le Core Data Programming guide mais je n'arrive pas à comprendre ce qu'il faut faire pour enregistrer le dessin dans les données de base, c'est-à-dire quel type d'attribut J'utilise (transformable je suppose) et comment exactement obtenir les CGPoints (à nouveau je suppose) pour fonctionner avec le managedObject que je vais devoir créer.

Pour dessiner J'utilise des méthodes:

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

Dans le projet iPhoneCoreDataRecipes d'Apple modifie les images aux données pour Core Data - (vous ne devez pas télécharger le projet leur code dans le fichier de mise en œuvre pour la transformation est au bas de la poste). Dans ce cas, il convertit les fichiers PNG en données, donc je ne sais pas comment l'appliquer aux CGPoints dans un UIImageView. Je suis heureux de fournir plus de mon code si nécessaire.

Merci à l'avance,
James

.

.

code de recette d'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 
+0

Avez-vous besoin d'interroger les coordonnées dans CoreData ou voulez-vous que pour aller chercher un dessin et d'en tirer tous les points composant le dessin? Si vous avez besoin de rechercher des coordonnées, créez une Entité de Données de base représentant chaque CGPoint avec 2 attributs (coordonnées), sinon créez un seul Objet Modèle pour chaque dessin avec un attribut transoformable et NSValue pour stocker tous les points. CGPoint -> NSValue -> NSMutableArray -> (transformable) Attribut NSManagedObject –

+0

Salut Martin, je pense que je peux seulement – jamesC

+0

vouloir récupérer le dessin qui a été créé (il sera composé de 1-4 couleurs - peut-être plus) désolé si cela vous jette pour une boucle. Donc, je veux stocker ce qui a été dessiné sur l'écran et ensuite être en mesure de le récupérer et soit charger la "photo" enregistrée et/ou l'envoyer par courriel. (J'ai vu des applications qui prennent une photo de l'écran et l'ajoutent à vos photos pour que vous puissiez les envoyer par la suite). Je comprends, cependant, qu'il est parfois préférable d'ajuster ce que je veux à ce qui est possible. Par conséquent, si l'enregistrer dans Core Data est poilu en le tournant vers une image, c'est ok. -j – jamesC

Répondre

1

Comme conseillé par TechZen:

Avez-vous besoin d'interroger les coordonnées dans CoreData ou voulez-vous que pour aller chercher un dessin et d'en tirer tous les points composant le dessin ? Si vous avez besoin de demander des coordonnées, créez une Entité de Données de base représentant chaque CGPoint avec 2 attributs (coordonnées), sinon créez un seul Objet Modèle pour chaque dessin avec un attribut transformable et NSValue pour stocker tous les points.

CGPoint -> NSValue -> NSMutableArray -> (transformables) NSManagedObject attribut

+0

Bonjour Martin, comme indiqué ci-dessus, je pense que dans ce cas, la création de la MOM serait la meilleure. Cependant, je ne suis pas clair sur le processus: CGPoint -> NSValue -> NSMutableArray -> (transformable) NSManagedObject processus que vous mentionnez et pourquoi c'est préférable à l'échantillon d'Apple où ils font une image à un transformateur de données. Je ne peux pas appeler .image sur l'ivar de UIImage. quelque chose comme theImageview.image peut-être un peu de code (ou un lien vers le code pertinent/ou booktitle pour démontrer ce processus et je comprendrais mieux) – jamesC