2013-04-30 96 views
1

嗨,我已经使用属性类型可转换,并且我遵循论坛中的归档过程。将自定义类保存到Coredata中

但它说

CoreData:警告:没有NSValueTransformer使用类名称 'SurveyResults' 被发现的属性 '调查' 对实体 'SurveyData' 2013年4月30日09:44:16.022 TestReachability [11641: C07] - [SurveyApplication encodeWithCoder:]:无法识别的选择发送到实例0x845cb00 2013年4月30日09:44:16.023 TestReachability [11641:C07] *终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因:“ - [ SurveyApplication encodeWithCoder:]:无法识别的选择器发送到实例0x845cb00'

这里我我的代码

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对象是我的自定义类和IM试图创建一个对象,然后存储它的核心数据,你.Could请帮助我。

感谢 Dheeraj

+0

请显示调查应用程序类的代码。 – Wain 2013-04-30 17:28:27

回答

5

这不足以使属性变形,还需要安排的转变发生。你不能只告诉核心数据来转换任何旧对象,并期望它知道该怎么做。你有几个选择:

  1. 不要告诉Core Data如何转换数据。在这种情况下,Core Data将尝试在您的对象上调用encodeWithCoder:将其转换为NSData。这就是为什么你会得到提到这个方法的错误 - 它试图调用你的类的方法,但是这种方法不存在。在这种情况下,您的课程必须符合NSCoding以进行转换。

  2. 告诉核心数据如何转换数据。在这种情况下,您将创建执行转换的NSValueTransformer的子类。您可以在核心数据模型编辑器或代码中的属性上对此进行配置。在这种情况下,您必须拥有知道如何执行转换的定制转换器类

+0

非常感谢汤姆,想通了......你的回答如此清澈透明 – 2013-05-06 23:20:07