Core Data, suppression des warnings
olof
Membre
Salut à tous,
je me lance dans une appli Core Data. Pour supprimer les warnings lors de l'utilisation des accesseurs de mes entités, j'ai créé une classe pour chacune de ces entités dans lesquelles je déclare mes attributs (@property et @dynamic).
Pour une collection, il me reste le problème d'ajout ou de suppression d'objets :
J'ai déclaré cette méthode dans le .h de ma classe :
Mais là , le compilateur me dit que c'est ma classe qui n'est pas complète (je n'ai rien ajouté dans le .h). Comment faire pour supprimer ces warnings ?
Merci !
je me lance dans une appli Core Data. Pour supprimer les warnings lors de l'utilisation des accesseurs de mes entités, j'ai créé une classe pour chacune de ces entités dans lesquelles je déclare mes attributs (@property et @dynamic).
Pour une collection, il me reste le problème d'ajout ou de suppression d'objets :
<br />[monEntite addAutreEntitesObject:monAutreEntite];<br />
J'ai déclaré cette méthode dans le .h de ma classe :
<br />-(void)addAutreEntitesObject:(AutreEntites *)value;<br />
Mais là , le compilateur me dit que c'est ma classe qui n'est pas complète (je n'ai rien ajouté dans le .h). Comment faire pour supprimer ces warnings ?
Merci !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
@property (nonatomic, retain) NSMutableSet * autreEntites;
@dynamic autreEntites
et dans le model, To-Many Relationship doit être coché
C'est bien ce que j'ai.
Mais il râle toujours (warning, ... may not respond to ...) sur :
"Core Data programming Guide, page 43 du PDF)
"You can easily use the same techniques to suppress compiler warnings for the automatically-generated to-many relationship mutator methods"
Maintenant si c'est cela je ne serais pas mécontent de comprendre pourquoi !
C'est comme ça que marche les protocols informels, tu déclares des méthodes dans une catégorie de NSObject sans les implémenter, ça te permet, à l'exécution, de vérifier si oui ou non une classe implémente une méthode, et de plus ça permet au compilateur de connaà®tre le prototype d'une méthode au cas où tu souhaiterais l'appeler mais qu'elle n'est pas forcément implémentée.
Donc cette technique de suppressions des warnings et le comportement normal des catégories.
C'est cette même fonctionnalité qui est utilisée pour "déclarer" des méthodes non-documentées (mais qui sont réellement implantées) afin d'éviter ces warnings à la compil'.
Reste
1) à Olof de vérifier si effectivement la définition en catégorie fait disparaà®tre des warnings, ce dont je ne doute pas compte tenu de ce que Psychoh13 et No nous disent,
2) à trouver une explication satisfaisante pour le Warning qui demeure si on met le prototype de la méthode dans l'interface du NSManagedObject : Une conséquence de l'ordonnancement entre les étages CoreData : Store --> Coordinator --> ManagedObjectContext --> les NSManagedObject
Je ne sais pas si je fais quelque chose de faux, mais mes warnings persistent. J'ai créé une catégorie (FGTest, que le fichier .h) :
Mon but étant donc d'ajouter à mon entité FGVin la méthode addSortiesObject.
Je fais quelque chose de faux ?
Mais très volontiers :
warning: 'FGVinEntity' may not respond to '-addSortiesObject'
Petite précision, j'utilise cette méthode depuis un test unitaire, mais je pense bien que ça ne doit rien changer !
Dans tous les .m où tu utilises cette méthode, il faut que tu importes le .h qui la déclare, pour que le compilateur voit qu'elle est bien définie et pour cette objet en particulier.
Ok, je vois ! Je me suis penché un peu plus sur les catégories et les différentes manières des les implémentées. Je l'ai mise dans le fichier .h de mon entité et maintenant c'est ok.
Merci !