CoreData syntaxe
paoz
Membre
Bonjour à tous,
Après avoir suivi plusieurs tutos, je me demande si la syntaxe obligatoire pour créer un objet avec CoreDate est forcément la suivante :
NSManagedObjectContext *context = [self managedObjectContext];
NSEntity *produit = [NSEntityDescription insertNewObjectForEntityForName:@Produit inManagedObjectContext:context];
[produit setValue:@Test forKey:@name];
[produit setValue:@Test forKey:@type];
NSError *error;
if (![context save:&error]) {
NSLog(@Whoops, couldn't save: %@", [error localizedDescription]);
}
Ou alors peut-on faire la chose suivante :
NSManagedObjectContext *context = [self managedObjectContext];
NSEntity *entity= [NSEntityDescription insertNewObjectForEntityForName:@Produit inManagedObjectContext:context];
Product *product = [[Product allo] initWithEntity: entity insertIntoManagedObjectContext: context];
product.name = @test;
product.type = @test;
NSError *error;
if (![context save:&error]) {
NSLog(@Whoops, couldn't save: %@", [error localizedDescription]);
}
La première syntaxe me semblant évidemment beaucoup plus lourde !
Merci pour les réponses
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Autrement, on ne dispose pas de propriétés, et il faut effectivement passer par le Key-Value Coding comme tu le montres dans le 1er exemple.
Et donc forcément inclure les .h partout ou on en a besoin ?
Donc en réalité, la première syntaxe est plus lourde, mais évite d'inclure tous ces .h à chaque fois ?
Personnellement, je crée presque toujours un NSManagedObject par entité. Pour deux raisons:
1) ça permet en plus d'avoir des propriétés "scalaires". Ainsi, je peux avoir une propriété déclarée
et l'affecter directement
2) il y a certaines méthodes qu'on ne saurait pas où mettre, alors qu'elles sont directement en lien avec l'entité.
Petite correction :
Et pour les .h du model, je les met dans le .pch (mais je crois que ça a changé cette façon de faire).
Oui 1 pour l'autocomplétion aussi, et 2 pour l'ajout de méthode à postériori, ca me semble évident.
Autre choses à savoir, l'implementation des relations to many non ordered d'Apple est buguee mais il y a un bon fix sur github (recherche sur Google si tu en as besoin)
Tu peux aussi aller jeter un coup d'oeil à cbdcoredatatoolkit.
Et si paoz était passé par la case présentation, ce serait plus clair pour tout le monde !!