2013-02-18 3 views
0

Я использую основные данные, чтобы сохранить некоторые строки. Я следующий класс под названием РезультатыОсновная информация о непризнанной ошибке селектора

Results.h

#import <CoreData/CoreData.h> 

@interface Results : NSManagedObject 

@property(nonatomic, retain) NSString *lessondate; 
@property(nonatomic, retain) NSString *lesson; 
@property(nonatomic, retain) NSString *location; 
@property(nonatomic, retain) NSString *start; 
@property(nonatomic, retain) NSString *end; 

@end 

Results.m

#import "Results.h" 

@implementation Results 

@dynamic lessondate; 
@dynamic lesson; 
@dynamic location; 
@dynamic start; 
@dynamic end; 

@end 

Ниже приведен код для выполнения сохранения:

-(void)saveLesson{ 

Results *result = (Results *)[NSEntityDescription insertNewObjectForEntityForName:@"Diary" inManagedObjectContext:managedObjectContext]; 

result.lessondate = calendarDateString; 
result.lesson = [NSString stringWithFormat:@"%@", lessonText.text]; 
result.location = [NSString stringWithFormat:@"%@", locationTest.text]; 
result.start = [NSString stringWithFormat:@"%@", startTimeText.text]; 
result.end = [NSString stringWithFormat:@"%@", endTimeText.text]; 
NSError *error; 


// here's where the actual save happens, and if it doesn't we print something out to the console 
if (![managedObjectContext save:&error]) 
{ 
    NSLog(@"Problem saving: %@", [error localizedDescription]); 
} 


[self dismissViewControllerAnimated:YES completion:nil]; 

}

Но когда я пытаюсь сохранить данные в приложение, приложение разбился, и показывает эти ошибки

2013-02-18 11:46:25.705 After managedObjectContext: <NSManagedObjectContext: 0x1f892480> 

2013-02-18 11:46:33.762 -[NSManagedObject setLesson:]: unrecognized selector sent to instance 0x1f80b380 

2013-02-18 11:46:33.764 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject setLesson:]: unrecognized selector sent to instance 0x1f80b380' 

Может кто-то пожалуйста, скажите мне, почему это происходит сбой? Тот же самый код находится в другом приложении и работает отлично.

+1

Где вы реализовали 'setLesson'? –

+0

Вы создали атрибут, названный урок в сущности в данных ядра? –

+0

Кроме того, в вашей ошибке говорится, что вы отправляете 'setLesson', но если вы вызвали его' saveLesson', это может вызвать некоторые проблемы. –

ответ

5

Вы создаете сущность, отличную от ожидаемой.

Вы звоните

[NSEntityDescription insertNewObjectForEntityForName:@"Diary" 
           inManagedObjectContext:managedObjectContext]; 

, который создает объект Diary. Поместите @"Results" в качестве первого аргумента для метода.

Пока вы назначаете созданный объект Diary в объект Results, это всего лишь синтаксический сахар - реальный объект под ним - это то, что вы передали в качестве имени сущности. Diary объект не имеет свойства lesson, и вы получаете исключение.

+0

Спасибо, защитник, ваш ответ помог –

+0

Вау, я тоже не могу поверить, что сделал эту ошибку. У меня было два объекта, и копирование одного на другое делало эту ошибку. – coolcool1994

Смежные вопросы