您好我使用了属性类型transformable,我已经在论坛中遵循了归档程序。
但它说
CoreData:警告:在实体'SurveyData'上找不到属性'survey'的类名为“SurveyResults”的NSValueTransformer 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 “
这是我的代码
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对象是我的自定义类,我试图创建一个对象,然后存储它的核心数据。请你帮帮我。
由于 Dheeraj
答案 0 :(得分:6)
仅使属性可转换是不够的,还需要安排转换发生。您不能只告诉Core Data转换任何旧对象并期望它知道该做什么。你有几个选择:
不要告诉Core Data如何转换数据。在这种情况下,Core Data会尝试在您的对象上调用encodeWithCoder:
将其转换为NSData
。这就是为什么你得到提到这个方法的错误 - 它试图在你的类上调用该方法,但该方法不存在。在这种情况下,您的班级必须符合NSCoding
才能进行转化。
告诉核心数据如何转换数据。在这种情况下,您将创建一个执行转换的NSValueTransformer
子类。您可以在Core Data模型编辑器或代码中对属性进行配置。在这种情况下,您必须拥有知道如何执行转换的自定义转换器类。