4

你好有什么区别

  [self.context refreshObject:site mergeChanges:YES];

  [self.context save:nil];

有时我同时使用它们,有时我只使用save. 它适用于两种情况。

4

1 回答 1

8

-save:保存您对上下文中的任何托管对象所做的更改。这意味着它们被刷新到持久存储协调器,然后将它们写入持久存储,持久存储将它们写入磁盘(假设是磁盘支持的存储)。

另一方面,-refreshObject:mergeChanges:做一些完全不同的事情。它从持久存储协调器(从持久存储读取,依此类推)读取对象的当前状态传递意味着保持YESmergeChanges对象的任何本地修改完好无损,并且只更新未更改的字段。这与-save:.

作为一个简单的思想实验,如果您运行-save:然后终止您的应用程序,那么在下次启动时您修改的数据仍然可用。如果您运行-refreshObject:mergeChanges:然后终止您的应用程序,您的任何本地更改都将丢失。

于 2013-03-15T22:39:34.050 回答