2011-09-06 3 views
1

J'ai une question simple:Propriété introuvable sur objet de type

J'ai une sous-classe NSManagedObject que je l'ai utilisé pendant un certain temps et cela fonctionnait parfaitement bien. Aujourd'hui, j'ai ajouté une nouvelle propriété à l'iVar correspondant. La propriété est un NSString * simple (nonatomic, retain). Et comme d'habitude, j'ai ajouté @synthesize à la propriété pour générer des fonctions setter et getter. Cependant, il n'y a aucun moyen que je puisse utiliser la propriété nouvellement définie !!! Je reçois toujours l'erreur "propriété introuvable sur l'objet de type" et ma construction échoue.

Voici quelques morceaux de code qui effacera les choses:

 

    //import the core data header first CoreData/CoreData.h 

    @interface Contact : NSManagedObject 

    { 
     NSString *contactID; 
     NSString *firstName; 
     NSString *myDevMod; 
    } 

    @property (nonatomic,retain) NSString *contactID; 
    @property (nonatomic,retain) NSString *firstName; 
    @property (nonatomic,retain) NSString *myDevMod; 

    @end 

et la mise en œuvre .m correspondante:

 
    #import "Contact.h" 

    @implementation Contact 

    @synthesize contactID, firstName, myDevMod; 

et le code qui utilise la classe Contact:

 
    #import "Contact.h" //at the start 

    Contact *aContact = [[Contact alloc] init]; 
    aContact.contactID = someId; //works perfectly fine 
    aContact.firstName = someName; //works perfectly fine 
    aContact.myDevMod = @""; //THIS IS WHERE THE ERROR OCCURS!! 
    [aContact doSomethingHere]; 
    [aContact release]; 

Selon vous, quelle pourrait être l'erreur?

Merci d'avance pour votre soutien.

+0

Les attributs 'contactID',' firstName' et 'myDevMod' de votre objet géré, ou des propriétés séparées qui ne font pas partie de la structure de données principale? – jrturton

+0

Également obtenez-vous toujours l'erreur assignant un objet chaîne ('[NSString stringWithString: @" "]') au lieu d'un '@" "' statique? – jrturton

+2

Comment avez-vous réglé cela? – TheLearner

Répondre

0

Weirdly le site ne me laisse pas ajouter un commentaire si:

commentaire: semble étrange. La première chose que j'essayerais est de supprimer les lignes @property et @synthesize - donc les getters et les setters sont créés automatiquement. Essayez aussi: aContact.myDevMod = someName; pour voir si cela fonctionne réellement - pourrait faire la lumière.

+0

'@ property' et' @ synthesize' sont ce qui crée les getters et setters - vouliez-vous dire cela? Si ces lignes sont supprimées, aucun appel de notation par points ne fonctionnera. – jrturton

+0

droite je ne peux pas demander myDevMod ou toute autre propriété si je le commente! Je soupçonne quelque chose en rapport avec CoreData mais je ne suis pas encore sûr ... – static0886

0

J'avais exactement le même problème la nuit dernière. Il m'a fallu environ 5 heures pour réparer ça. Mes premières tentatives ont été de créer de nouveau les classes de modèles avec Menue Editor -> Create NSManagedObject Subclass ...

Mais cela n'a pas aidé. Même si j'avais supprimé les classes auparavant, Xcode n'a pas reconnu les propriétés. J'ai également supprimé le modèle et le reconstruire avec le même nom. Et créé les sous-classes NSManagedObject à nouveau. N'a pas aidé. Ensuite, j'ai supprimé le modèle et le MOS et je l'ai construit à partir de zéro! Mais avec des noms différents! Il m'a fallu longtemps pour changer mon code mais après tout ça semblait normal. Maintenant, je peux ajouter, modifier et supprimer des attributs dans le modèle et les propriétés NSManagedObject Subclasses et Xcode les reconnaissent à nouveau.

Mais mon garçon, ça m'a presque rendu fou !!! Et je ne sais toujours pas ce qui s'est passé!

0

Mon expérience est que ce n'est pas le modèle ou les objets qui ont besoin d'être recréés. La plupart du temps, vous pouvez recréer le fichier que vous travaillez. Faire une nouvelle NSView de ce que chaque .h et fichier .m et copier les informations sur le nouveau fichier, et il fonctionnera.

Questions connexes