4

嗨,我使用了可转换的属性类型,并且我遵循了在其中一个论坛中存档的程序。

但它说

CoreData:警告:在实体“SurveyData”2013-04-30 09:44:16.022 TestReachability[11641:c07] -[SurveyApplication encodeWithCoder:] 上找不到属性“survey”的类名为“SurveyResults”的 NSValueTransformer:已发送无法识别的选择器到实例 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

4

1 回答 1

8

使属性可转换是不够的,您还需要安排转换的发生。你不能只告诉 Core Data 转换任何旧对象并期望它知道该做什么。你有几个选择:

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

  2. 告诉 Core Data 如何转换数据。在这种情况下,您创建一个NSValueTransformer执行转换的子类。您可以在 Core Data 模型编辑器或代码中对属性进行配置。在这种情况下,您必须有一个知道如何执行转换的自定义转换器类。

于 2013-04-30T18:02:16.320 回答