发送到Core Data的无法识别的选择器会导致应用程序崩溃

时间:2013-01-01 16:01:03

标签: objective-c ios core-data

我有一个iPad应用程序,使用XCode 4.5,Storyboards,iOS 6和MagicalRecord。此代码导致错误,我不明白为什么。 aApptStartselectedStartDate都定义为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'

2 个答案:

答案 0 :(得分:4)

  

那么,是什么造成了这个?

错误表明AppointmentInfo中没有该名称的属性。

那么,您的NSManagedObject子类(AppointmentInfo)是否声明属性aApptStart?此外,您的实体是否存在相应的属性(如果该属性已实现@dynamic ally)?

我想它会....也许是一个错字? 你能展示AppointmentInfo的界面和实现吗?

答案 1 :(得分:0)

显然,您的[AppointmentInfo createEntity]不会返回AppointmentInfo类型的对象,但NSManagedObjectNSManagedObject不会为setAApptStart提供选择器,这意味着没有有问题的aApptStart

您的+(AppointmentInfo*) createEntity究竟是什么样的?