1
votes

I have a simple question:

I have a NSManagedObject subclass that I've been using for some time and it was working perfectly fine. Today I added a new property to it with the corresponding iVar. The property is a simple (nonatomic,retain) NSString *. And as normal i added @synthesize to the property to generate setter and getter functions. However, there is no way i can use the newly defined property!!! I keep getting "property not found on object of type" error and my build fails.

Here are a few chunks of code that will clear things out:


    //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

and the corresponding .m implementation:

    #import "Contact.h"

    @implementation Contact 

    @synthesize contactID, firstName, myDevMod;

and the code that uses the Contact class:

    #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];

What do you think could be the error??

Thanks in advance for your support.

3
Are contactID,firstName and myDevMod attributes of your managed object, or separate properties that are not part of the core data structure?jrturton
Also do you still get the error assigning a string object ([NSString stringWithString:@""]) instead of a static @""?jrturton

3 Answers

0
votes

Weirdly the site won't let me add a comment so :

comment: Sounds odd. First thing I'd try is removing the @property lines and @synthesize line - so the getters and setters are created automagically. Also try: aContact.myDevMod = someName; to see if that actually works - might shed some light.

0
votes

I had exact the same problem last night. It took me about 5 hours to fix that. My first attempts were to create the model classes again with menue Editor -> Create NSManagedObject Subclass...

But that didn´t help. Even if i had deleted the classes beforehand Xcode did not recognize the properties. I´ve deleted the model as well and rebuild it with same name. And created the NSManagedObject Subclasses again. Didn't help. Then i´ve deleted the model and the MOS again and build it up from scratch! But with different names! Took me again a long time to change my code but after that everthing seemed to be normal. Now i can add, change and delete attributes in the model and the properties NSManagedObject Subclasses and Xcode recognizes them again.

But boy, it almost drove me nuts!!! And i still don't know what happend!

0
votes

My experience is that it isn't the model or the objects that need to be recreated. Most of the time you can recreate the file you are working in. Make a new NSView of what every .h and .m file and copy the info over to the new file, and it will work.