我有一个简单的问题:
我有一个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];
您认为错误是什么?
提前感谢您的支持。
答案 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 文件并复制信息到新文件,它将工作。