【发布时间】:2010-11-03 16:39:41
【问题描述】:
我正在使用具有“可转换”类型属性的 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
}
在我看来,将可转换属性“重新设置”到托管对象,然后保存托管对象,应该会导致数据通过 NSKeyedUnarchiveFromData 值转换器重新编码。但是编码器永远不会被调用,更新的数据也不会被保存。
如果不是将原始数据重新设置回托管对象,而是创建修改后数据的副本并将 that 设置到托管对象上,则可以识别更改。核心数据是否可能正在使用数据的缓存版本?还是我在这里做错了什么?谢谢...
【问题讨论】: