我有一个由XCode模型接口创建的NSManagedObject子类。
该类有一些NSString和NSNumber成员,以及一个NSDate成员。
当我尝试设置NSDate成员时,我得到了以下异常:
2009-10-12 21:53:32.228 xxx[2435:20b] Failed to call designated initializer on NSManagedObject class 'Item'
2009-10-12 21:53:32.228 xxx[2435:20b] *** -[Item setDate:]: unrecognized selector sent to instance 0x3f7ed30
2009-10-12 21:53:32.229 xxx[2435:20b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[Item setDate:]: unrecognized selector sent to instance 0x3f7ed30'
date参数与其他参数类似,不同之处在于它不是
@property (nonatomic, retain) NS{String,Number}* propname; 是个
@property (nonatomic, retain) NSDate *date;顺便说一句,我正在分配的Item实例只是一个常规的[[Item alloc] init],没有关联的上下文或任何东西。
一开始我认为我的NSDate*有问题,然后我试着给它赋值NSDate日期,甚至是零。它仍然会崩溃。
有什么想法吗?
发布于 2009-10-12 19:15:42
不能在没有关联的NSManagedObjectContext的情况下实例化NSManagedObject子类(正如您所展示的,您可以这样做,但是结果几乎肯定不是您想要的)。
日志的第一行提示如下:
2009-10-12 21:53:32.228 xxx[2435:20b] Failed to call designated initializer on NSManagedObject class 'Item'所有Objective-C类都有一个指定的初始化器(按照约定),它是必须显式调用或通过其他方便的初始化器调用的初始化器方法。在NSManagedObject的情况下,这是-[NSManagedObject initWithEntity:insertIntoManagedObjectContext:]。未能导致指定的初始值设定项会导致未定义且可能不正确的行为,因为不能保证实例被正确初始化。我猜想是NSManagedObject初始化器设置了机制来支持实体属性的@synthesize'd属性访问,如果没有这个机制,实例可能认为它不能响应@synthesize'd调用,而你对setData:的调用将导致选择器找不到错误。
https://stackoverflow.com/questions/1556304
复制相似问题