objective-c - NSManagedObject [用户设置用户名 :]: unrecognized selector sent to instance

标签 objective-c core-data

我有一个使用 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/

相关文章:

ios - stub 方法不适用于 OCMock3.4

ios - 如何在 Storyboard 中使用 ViewController 的自定义初始化

iOS MVC : get view controller class from model?

objective-c - 无法使用 nil 模型创建 NSPersistentStoreCoordinator

objective-c - 使用反射设置 Objective-C 类的属性值

ios - UITextView 根据 UITableViewCell 中的文本动态宽度

iphone - EXC_BAD_ACCESS 在 main.m 中

objective-c - Core Data sqlite 文件不断增长

ios - 核心数据Fetch请求语法查询

iphone - Core Data 中的轻量级迁移不能进行哪些更改?