首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cocoa-Touch,NSManagedObject:设置属性时异常

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

Stack Overflow用户
提问于 2009-10-12 19:00:20
回答 1查看 6K关注 0票数 2

我有一个由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参数与其他参数类似,不同之处在于它不是

代码语言:javascript
复制
@property (nonatomic, retain) NS{String,Number}* propname;  

是个

代码语言:javascript
复制
@property (nonatomic, retain) NSDate *date;

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

一开始我认为我的NSDate*有问题,然后我试着给它赋值NSDate日期,甚至是零。它仍然会崩溃。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-12 19:15:42

不能在没有关联的NSManagedObjectContext的情况下实例化NSManagedObject子类(正如您所展示的,您可以这样做,但是结果几乎肯定不是您想要的)。

日志的第一行提示如下:

代码语言:javascript
复制
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:的调用将导致选择器找不到错误。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1556304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档