Cocoa-Touch,NSManagedObject:设置属性时的异常

Pro*_*ody 2 iphone cocoa-touch core-data objective-c

我有一个NSManagedObject子类,由XCode模型接口创建.
该类有一些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参数和其他参数一样,除了不是a

@property (nonatomic, retain) NS{String,Number}* propname;  
Run Code Online (Sandbox Code Playgroud)

它是

@property (nonatomic, retain) NSDate *date;
Run Code Online (Sandbox Code Playgroud)

顺便说一句,Item我正在分配的实例只是一个常规的[[Item alloc] init],没有相关的上下文或任何东西.

首先我认为我的NSDate*有问题,然后我尝试分配它[NSDate日期],甚至是零.它仍然崩溃.

有任何想法吗?

Bar*_*ark 9

你不能在NSManagedObject没有关联的情况下实例化一个子类NSManagedObjectContext(你可以如你所示,但结果几乎肯定不是你想要的).

日志的第一行提示:

2009-10-12 21:53:32.228 xxx[2435:20b] Failed to call designated initializer on NSManagedObject class 'Item'
Run Code Online (Sandbox Code Playgroud)

所有Objective-C类(按照惯例)都有一个指定的初始化程序,它是必须被显式或通过其他便利初始化程序调用的初始化方法.在的情况下NSManagedObject,这是-[NSManagedObject initWithEntity:insertIntoManagedObjectContext:].未能导致指定的初始化程序导致未定义且可能不正确的行为,因为不保证实例已正确初始化.我猜测NSManagedObject初始化器设置机制以支持@synthesize实体属性的'd属性访问.如果没有这种机制,实例可能认为它不能响应@synthesize'd调用而你的调用setData:会导致选择器找不到错误.