在类型的对象上找不到属性

时间:2011-09-06 08:29:27

标签: iphone ios properties

我有一个简单的问题:

我有一个NSManagedObject子类,我已经使用了一段时间,它工作得非常好。 今天我用相应的iVar为它添加了一个新属性。该属性是一个简单的(非原子的,保留)NSString *。 正常情况下,我将@synthesize添加到属性以生成setter和getter函数。 但是,我无法使用新定义的属性!我一直在“找不到类型对象上的属性”错误,我的构建失败。

以下是一些可以解决问题的代码:


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

和相应的.m实现:

    #import "Contact.h"

    @implementation Contact 

    @synthesize contactID, firstName, myDevMod;

以及使用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];

您认为错误是什么?

提前感谢您的支持。

3 个答案:

答案 0 :(得分:0)

奇怪的是,该网站不允许我添加评论,所以:

注释: 听起来很奇怪。我要尝试的第一件事就是删除@property行和@synthesize行 - 这样就可以自动创建getter和setter。还可以尝试:aContact.myDevMod = someName;看看它是否真的有效 - 可能会有所启发。

答案 1 :(得分:0)

昨晚我遇到了同样的问题。我花了大约5个小时来解决这个问题。我的第一次尝试是使用menue Editor再次创建模型类 - >创建NSManagedObject子类...

但这没有帮助。即使我事先删除了类,Xcode也无法识别属性。我也删除了模型,并使用相同的名称重建它。并再次创建NSManagedObject子类。没有帮助。然后我再次删除了模型和MOS并从头开始构建它!但是名字不同!再花了很长时间才改变我的代码,但在那之后看起来很正常。现在我可以添加,更改和删除模型中的属性,属性NSManagedObject子类和Xcode再次识别它们。

但男孩,这几乎让我疯了!我仍然不知道发生了什么!

答案 2 :(得分:0)

我的经验是,不是模型或需要重新创建的对象。 大多数情况下,您可以重新创建您正在使用的文件。为每个 .h .m 文件创建一个新的 NSView 文件并复制信息到新文件,它将工作。