2013-04-30 3 views
1

Привет, я использовал тип атрибута transformable, и я выполнил процедуру архивирования на одном из форумов.Сохранение пользовательского класса в Coredata

Но это говорит

CoreData предупреждение: не NSValueTransformer с именем класса 'SurveyResults' было найдено для атрибута 'исследования' на сущности 'SurveyData' 2013-04-30 09: 44: 16.022 TestReachability [11641: c07] - [SurveyApplication encodeWithCoder:]: непризнанный селектор отправлен в экземпляр 0x845cb00 2013-04-30 09: 44: 16.023 TestReachability [11641: c07] * Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: '- [ SurveyApplication encodeWithCoder:]: непризнанный селектор, отправленный в экземпляр 0x845cb00 '

Здесь i мой код

SurveyApplication *survey =[[SurveyApplication alloc]init]; 
[email protected]"dheeraj"; 
[email protected]"573-356-2598"; 

NSManagedObject *aStory = [NSEntityDescription insertNewObjectForEntityForName:@"SurveyData"inManagedObjectContext:self.managedObjectContext]; 
[aStory setValue:survey forKey:@"survey"]; 
NSError *saveError = [[NSError alloc]init]; 
if (![self.managedObjectContext save:&saveError]) { 
    NSLog(@"%@",saveError); 
} 

объект SurveyAppplication мой собственный класс и им пытаются создать объект, а затем сохранить его основные данные .Could пожалуйста, помогите мне.

Благодаря Dheeraj

+0

Просьба показать код для класса исследования опроса. – Wain

ответ

5

Это не достаточно, чтобы сделать атрибут трансформируемым, также необходимо организовать преобразование произойдет. Вы не можете просто передать Core Data для преобразования любого старого объекта и ожидать, что он узнает, что делать. У вас есть несколько вариантов:

  1. Не сообщайте основным данным, как преобразовать данные. В этом случае Core Data попытается вызвать encodeWithCoder: на ваш объект, чтобы преобразовать его в NSData. Вот почему вы получаете ошибку, которая упоминает этот метод - он пытается вызвать метод в вашем классе, но этот метод не существует. В этом случае ваш класс должен соответствовать NSCoding для трансформации.

  2. Сообщите основные данные, как преобразовать данные. В этом случае вы создаете подкласс NSValueTransformer, который выполняет преобразование. Вы настраиваете это в атрибуте либо в редакторе модели Core Data, либо в коде. В этом случае вы должны иметь собственный класс трансформатора, который знает, как выполнить преобразование.

+0

Большое спасибо, Том, понял это. Ваш ответ настолько кристально чист –

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