gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 20:00:28 27 4
gpt4 key购买 nike

我正在使用具有“可转换”类型属性的核心数据 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com