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

Iphone 核心数据不更新可转换属性,iphone,core-data,ios,Iphone,Core Data,Ios,我正在使用一个核心数据NSManagedObject(在iOS应用程序中)和一个类型为“transformable”的属性来存储一块数据。使用内置的NSKeyedUnachiveFromData值转换器对数据进行编码/解码。问题是,在二进制数据更改后,我很难让NSManagedObject正确更新。例如,代码如下所示: id temp = [myManagedObject myTransformableAttribute]; //.. do something with temp [myMa

我正在使用一个核心数据NSManagedObject(在iOS应用程序中)和一个类型为“transformable”的属性来存储一块数据。使用内置的NSKeyedUnachiveFromData值转换器对数据进行编码/解码。问题是,在二进制数据更改后,我很难让NSManagedObject正确更新。例如,代码如下所示:

id temp = [myManagedObject myTransformableAttribute];

//.. do something with temp

[myManagedObject setMyTransformableAttribute:temp];

NSError *error;
if(![[myManagedObject managedObjectContext] save:&error]) {
    //present error
}
在我看来,在托管对象上“重新设置”可转换属性,然后保存托管对象,应该会导致数据通过NSKeyedUnachiveFromData值转换器重新编码。但是编码器永远不会被调用,更新的数据也不会被保存


如果我没有将原始数据重新设置回托管对象,而是创建了修改后的数据的副本并将其设置到托管对象上,则可以识别更改。核心数据是否可能正在使用数据的缓存版本?还是我在这里做错了什么?谢谢…

我刚刚遇到了同样的问题,显然这是一个已知的bug:


似乎您还需要覆盖NSManagedObject实体子类中的类初始化方法,以便transformer工作(已知的核心数据错误)。 以下代码来自苹果的位置代码示例,经过测试,可以正常工作:

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