2010-04-29 5 views
0

J'ai deux fichiers de classe générés par Core Data auxquels j'aimerais ajouter des méthodes personnalisées. Je n'ai pas besoin d'ajouter de variables d'instance. Comment puis-je faire ceci?Puis-je ajouter une méthode personnalisée aux classes générées par Core Data?

J'ai essayé d'ajouter une catégorie de méthodes:

// ContactMethods.h (my category on Core Data-generated "Contact" class) 
#import "Contact.h" 
@interface Contact (ContactMethods) 
-(NSString*)displayName; 
@end 
... 
// ContactMethods.m 
#import "ContactMethods.h" 
@implementation Contact (ContactMethods) 
-(NSString*)displayName { 
    return @"Some Name"; // this is test code 
    } 
@end 

Cela ne fonctionne pas, cependant. Je reçois un message du compilateur disant que "-NSManagedObject peut ne pas répondre à" displayName "" et bien sûr, quand je lance l'application, je ne reçois pas "Some Name" où je devrais le voir.

Répondre

1

D'abord, allez dans votre modèle de données, sélectionnez l'entité à laquelle vous voulez ajouter des méthodes et changez la classe en quelque chose de approprié (j'utilise le nom de l'entité avec mes initiales au début). Sélectionnez ensuite Nouveau fichier ... dans le menu Fichier. De là, sélectionnez Managed Object Class (vous devez le faire pendant que le modèle de données est toujours le document actif ou vous ne verrez pas cette option). Parcourez l'assistant de fichier en veillant à sélectionner l'entité correcte (Xcode nommera le fichier correctement en fonction de la classe que vous avez entrée précédemment). Assurez-vous également que les options Générer des accesseurs et Générer des propriétés Objective-C 2.0 sont sélectionnées. Vous devriez alors être en mesure d'ajouter des méthodes personnalisées que vous voulez comme n'importe quelle autre classe. Si vous avez besoin de plus d'aide consultez http://themikeswan.wordpress.com/2009/05/30/a-core-data-tutorial-part-2-polishing-the-basics/ J'ai écrit ceci basé sur Mac OS X, mais le concept est le même pour iPhone.

+2

Ceci est la manière "correcte" de le faire. Cependant, il peut devenir difficile de gérer l'amalgame de code généré par une machine et un humain. Je recommande fortement d'utiliser le ** mogenerator ** de Wolf Rentzsch (http://rentzsch.github.com/mogenerator/). Il automatise cette tâche répétitive et sujette aux erreurs et ajoute de très jolies fonctionnalités automatisées à la classe personnalisée, comme la (dé) boxe de NSNumbers et autres. –

Questions connexes