gpt4 book ai didi

iphone - 核心数据不保存对 Transformable 属性的更改

转载 作者:行者123 更新时间:2023-12-03 18:39:27 25 4
gpt4 key购买 nike

我正在将 NSMutableArray 保存在核心数据存储的 Transformable 属性中。我可以使用 NSMutableArray 中的数据正确创建实体,然后将其从属性中加载出来,甚至进行更改。当我浏览我的应用程序并重新访问它时,我的更改将被保存。但是,当我重新加载应用程序时,更改尚未保存在核心数据存储中。对实体的其他更改 - 例如更改其标题(保存为 NSString) - 即使我退出并重新打开应用程序也会保存。

我读到another StackOverflow question Transformable 属性不会自动通知更改,并且我必须在保存之前调用“适当的 setter ”。然而,即使使用实际的 setter 函数 - 我也尝试调用 didChangeValueForKey - 该属性未正确保存。有什么好的想法吗?

最佳答案

正如您所注意到的,您必须“重新设置”可转换属性:

id temp = [myManagedObject myTransformableAttribute];

//.. do something with temp

[myManagedObject setMyTransformableAttribute:temp];

Core Data 无法适本地监视任意可变形对象,以便它能够自动“做正确的事情”。

此外,您必须确保在修改可转换属性后确实保存了托管对象上下文:

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

在程序的单次运行期间,未保存的更改将显示为可见,因为托管对象上下文将修改的实例保留在内存中。但是,如果不保存上下文,这些更改将不会保留到磁盘。

关于iphone - 核心数据不保存对 Transformable 属性的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3057168/

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