我有一个使用 CoreData 的应用程序。我为 CoreData 中的两种对象类型创建了 NSManagedObjects。当我尝试使用该对象并在该对象上设置属性时,编译器会显示“[User setUsername:]:无法识别的选择器发送到实例”。无论我[User setValue]尝试什么属性,它总是给出无法识别的结果?
User *joeBlow = [[User alloc] init];
[joeBlow setUsername:@"joeblow"];
或者 用户 *joeBlow = [[用户分配] init]; joeBlow.username = @"JoeBlow";
两者都给出“无法识别的选择器发送到实例”
下面是我的用户代码:
用户.h
@interface User : NSManagedObject
@property (nonatomic, retain) NSString * address1;
@property (nonatomic, retain) NSString * username;
@property (nonatomic, retain) NSString * zip;
@property (nonatomic, retain) NSString * email;
@end
用户.m
@implementation User
@dynamic address1;
@dynamic username;
@dynamic zip;
@dynamic email;
@end
最佳答案
您无法通过正常的 alloc
-init
模式创建 Core Data 实体的新实例(与其他类不同)。相反,调用 NSEntityDescription 上的类方法:
User *joeBlow = [NSEntityDescription
insertNewObjectForEntityForName:@"User"
inManagedObjectContext:self.managedObjectContext];
[joeBlow setUsername:@"joeblow"];
请参阅 Apple 的 Core Data Programming Guide了解更多信息。
最后,请注意 [jb setUsername:@"jb"]
和 jb.username = @"jb"
是相同的 - 后者是点符号,表达前者的另一种方式。
关于objective-c - NSManagedObject [用户设置用户名 :]: unrecognized selector sent to instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13736461/