【发布时间】:2013-03-15 22:26:36
【问题描述】:
你好有什么区别
[self.context refreshObject:site mergeChanges:YES];
和
[self.context save:nil];
有时我同时使用它们,有时我只使用save。它适用于两种情况。
【问题讨论】:
标签: iphone cocoa-touch core-data nsmanagedobjectcontext
你好有什么区别
[self.context refreshObject:site mergeChanges:YES];
和
[self.context save:nil];
有时我同时使用它们,有时我只使用save。它适用于两种情况。
【问题讨论】:
标签: iphone cocoa-touch core-data nsmanagedobjectcontext
-save: 保存您对上下文中的任何托管对象所做的更改。这意味着它们被刷新到持久存储协调器,然后将它们写入持久存储,持久存储将它们写入磁盘(假设是磁盘支持的存储)。
另一方面,-refreshObject:mergeChanges: 做了一些完全不同的事情。它读取来自持久存储协调器的对象的当前状态(从持久存储中读取,等等)。为mergeChanges 传递YES 意味着保持对对象的任何本地修改不变,并且只更新未更改的字段。这与-save: 几乎相反。
作为一个简单的思想实验,如果您运行 -save: 然后终止您的应用程序,则在下次启动时您修改的数据仍然可用。如果您运行 -refreshObject:mergeChanges: 然后终止您的应用程序,您的任何本地更改都将丢失。
【讨论】:
-refreshObject: 在保存之前很适合使用。
-refreshObject:mergeChanges:。就是这样。