我正在保存一个NSMutableArray
在我的核心数据存储中的 Transformable 属性中。我可以使用中的数据正确创建实体NSMutableArray
然后将其从属性中加载出来,甚至进行更改。当我浏览我的应用程序并重新访问它时,我的更改将被保存。但是,当我重新加载应用程序时,更改尚未保存在核心数据存储中。对实体的其他更改 - 例如更改其标题,该标题另存为NSString
- 即使我退出并重新打开应用程序也会保存。
我读到另一个 StackOverflow 问题 https://stackoverflow.com/questions/2764046?tab=oldest#tab-topTransformable 属性不会自动通知更改,并且我必须在保存之前调用“适当的设置器”。然而,即使使用实际的设置函数 - 我也尝试过调用didChangeValueForKey
- 财产未正确保存。有什么好主意吗?
正如您所注意到的,您必须“重新设置”可转换属性:
id temp = [myManagedObject myTransformableAttribute];
//.. do something with temp
[myManagedObject setMyTransformableAttribute:temp];
Core Data 无法适当地监视任意可变形对象,以便它能够自动“做正确的事情”。
此外,您必须确保在修改可转换属性后实际保存了托管对象上下文:
NSError *error;
if(![[myManagedObject managedObjectContext] save:&error]) {
//present error
}
在程序的单次运行期间,未保存的更改将显示为可见,因为托管对象上下文将修改的实例保留在内存中。但是,如果不保存上下文,这些更改将不会保留到磁盘。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)