核心数据不更新可转换属性

我正在使用types为“transformable”的属性的Core Data NSManagedObject(在iOS应用程序中)存储大量数据。 数据使用内置的NSKeyedUnarchiveFromData值转换器进行编码/解码。 问题是,我有麻烦让NSManagedObject更正后,二进制数据已经改变。 比方说,代码如下所示:

id temp = [myManagedObject myTransformableAttribute]; //.. do something with temp [myManagedObject setMyTransformableAttribute:temp]; NSError *error; if(![[myManagedObject managedObjectContext] save:&error]) { //present error } 

在我看来,将可变形属性“重新设置”到托pipe对象上,然后保存托pipe对象应该使数据通过NSKeyedUnarchiveFromData值转换器进行重新编码。 但编码器永远不会被调用,更新的数据不会被保存。

如果不是将原始数据重新设置回pipe理对象,而是创build修改数据的副本并将其设置到pipe理对象上,则会识别这些更改。 核心数据是否有可能使用caching版本的数据? 还是有什么我在这里做错了吗? 谢谢…

似乎你需要重写你的NSManagedObject实体子类中的类初始化方法也为变压器工作(已知的核心数据错误)。 以下代码来自Apple的位置代码示例,它经过testing并可用: http : //developer.apple.com/library/ios/#samplecode/Locations/Introduction/Intro.html

 + (void)initialize { if (self == [Event class]) { UIImageToDataTransformer *transformer = [[UIImageToDataTransformer alloc] init]; [NSValueTransformer setValueTransformer:transformer forName:@"UIImageToDataTransformer"]; } } 

我刚刚遇到了同样的问题,显然它似乎是一个已知的错误:

http://lists.apple.com/archives/Cocoa-dev/2009/Dec/msg00979.html