发送到 Core Data 的无法识别的选择器导致应用程序崩溃
Posted
技术标签:
【中文标题】发送到 Core Data 的无法识别的选择器导致应用程序崩溃【英文标题】:Unrecognized selector sent to Core Data causes app crash 【发布时间】:2013-01-01 16:01:03 【问题描述】:我有一个 iPad 应用程序,使用 XCode 4.5、Storyboards、ios 6 和 MagicalRecord。此代码导致错误,我不明白为什么。 aApptStart
和 selectedStartDate
都定义为 DateTime。那么,是什么原因造成的呢?
这是有问题的代码:
- (IBAction)saveAppointment:(UIButton *)sender
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
AppointmentInfo *newAppointment = [AppointmentInfo createEntity]; // create the entity
NSLog(@"Selected start Date (save): %@", [self formatSelectedDate: selectedStartDate]);
newAppointment.aApptStart = selectedStartDate; // <------ causing the error
newAppointment.aApptEnd= selectedEndDate;
newAppointment.aTech = selectedTech;
[localContext MR_saveNestedContexts];
这是我得到的错误:
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[NSManagedObject setAApptStart:]: 无法识别的选择器发送到实例 0xee85dd0'
【问题讨论】:
【参考方案1】:那么,是什么原因造成的呢?
错误表明 AppointmentInfo 中没有该名称的属性。
那么,您的 NSManagedObject 子类 (AppointmentInfo) 是否声明了属性 aApptStart?另外,您的实体是否存在相应的属性(如果该属性已实现@dynamic
ally)?
我想它会......也许是一个错字? 能否展示 AppointmentInfo 的接口和实现?
【讨论】:
我正在重组我的答案,这有点乏味,因为我在我的 ipad 上。直到现在才看到你的评论。什么是 undeeded(这甚至是什么意思),什么不能编译?你的答案在哪里?没有更多细节很难给出具体答案。 “没有更多细节很难给出具体答案”>> 是的,因此这不是一个答案:) 马里奥...确实是错字...非常感谢...祝您和您的家人新年快乐... @Daij-Djan 这是一个答案,因为我的猜测是一个错字。我承认我并没有完全完成我的答案的格式化和结构化,但它回答了这个问题(“是什么导致了这个错误”。答案:未声明属性,以及 -guessed- 原因,一个错字)。你很快就会投反对票:)【参考方案2】:显然您的[AppointmentInfo createEntity]
没有返回AppointmentInfo
类型的对象,但NSManagedObject
和NSManagedObject
没有为setAApptStart
提供选择器,这意味着没有属性aApptStart
的设置器。
您的+(AppointmentInfo*) createEntity
到底长什么样?
【讨论】:
以上是关于发送到 Core Data 的无法识别的选择器导致应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
使用 Core Data 获取生成“无法识别的选择器错误”?