将自定义类保存到Coredata中
您好,我已经使用属性types可转换,我已经遵循论坛的其中一个归档的程序。
但它说
CoreData:警告:没有在实体“SurveyData”上find类名为“SurveyResults”的属性“survey”的NSValueTransformer 2013-04-30 09:44:16.022 TestReachability [11641:c07] – [SurveyApplication encodeWithCoder:]:无法识别的select器已发送实例0x845cb00 2013-04-30 09:44:16.023 TestReachability [11641:c07] *由于未捕获的exception'NSInvalidArgumentException',原因:' – [SurveyApplication encodeWithCoder:]:无法识别的select器发送到实例0x845cb00'
这是我的代码
SurveyApplication *survey =[[SurveyApplication alloc]init]; survey.name=@"dheeraj"; survey.phone=@"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对象是我的自定义类,并试图创build一个对象,然后存储它的核心数据。请你帮我。
谢谢Dheeraj
使属性转化是不够的,还需要安排转换发生。 你不能只是告诉核心数据转换任何旧的对象,并期望它知道该怎么做。 你有几个select:
-
不要告诉核心数据如何转换数据。 在这种情况下,核心数据将尝试调用
encodeWithCoder:
在您的对象将其转换为NSData
。 这就是为什么你会得到提到这个方法的错误 – 它试图调用你的类的方法,但是这个方法不存在。 在这种情况下, 您的类必须符合NSCoding
才能进行转换。 -
告诉核心数据如何转换数据。 在这种情况下,您将创build执行转换的
NSValueTransformer
的子类。 您可以在核心数据模型编辑器或代码中的属性上对其进行configuration。 在这种情况下, 您必须拥有一个知道如何执行转换的自定义转换器类 。