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

标签 iphone core-data ios

我正在使用具有“可转换”类型属性的核心数据 NSManagedObject(在 iOS 应用程序中)来存储数据 block 。使用内置的 NSKeyedUnarchiveFromData 值转换器对数据进行编码/解码。问题是我在二进制数据更改后无法正确更新 NSManagedObject。例如,代码如下所示:

id temp = [myManagedObject myTransformableAttribute];

//.. do something with temp

[myManagedObject setMyTransformableAttribute:temp];

NSError *error;
if(![[myManagedObject managedObjectContext] save:&error]) {
    //present error
}

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

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

最佳答案

似乎您需要重写 NSManagedObject 实体子类中的类初始化方法才能使转换器正常工作(已知的核心数据错误)。 以下代码来自Apple的位置代码示例,它经过测试并且可以工作: 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"];
    }
}

关于iphone - 核心数据不更新可转换属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4089352/

相关文章:

ios - 格式化图表中的数字 ios swift

objective-c - 存储和访问静态 NSArray

iphone - 根据字符顺序将字符串搜索到 NSArray 中?

iphone - 我只是没有得到 AudioFileReadPackets

iphone - iPhone OS 上结构对齐的确切规则是什么?

iphone - 加快核心数据获取

ios - 核心数据获取谓词 nil 检查失败/意外结果?

cocoa - 以编程方式绑定(bind) NSTableView

ios - 如何在 Xcode(iOS 应用程序)中使用测试

iphone - Xcode 4,使用断点记录或 po 对象