Core Data不保存对Transformable属性的更改

Jas*_*son 7 iphone core-data

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

我在另一个StackOverflow问题中读到,Transformable属性不会自动通知更改,并且我必须在保存之前调用"相应的setter".然而,即使使用实际的setter函数 - 我也尝试过调用didChangeValueForKey- 该属性未正确保存.有什么好主意吗?

Bar*_*ark 6

正如您所说,您必须"重新设置"可转换的属性:

id temp = [myManagedObject myTransformableAttribute];

//.. do something with temp

[myManagedObject setMyTransformableAttribute:temp];
Run Code Online (Sandbox Code Playgroud)

Core Data无法正确监视任意可转换对象,因此它可以自动"做正确的事情".

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

NSError *error;
if(![[myManagedObject managedObjectContext] save:&error]) {
  //present error
}
Run Code Online (Sandbox Code Playgroud)

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

  • 我使用NSMutableArrays作为可转换属性遇到了这个问题,我正在访问适当的setter方法并正确保存上下文(其他属性被保存为证明).在我的情况下,解决方案是将类型更改为NSArray. (5认同)