4
你好什么是什么管理对象上下文保存并refreshObject之间的区别:mergeChanges:
[self.context refreshObject:site mergeChanges:YES];
和
[self.context save:nil];
之间的区别有时我用他们两个,有时我只用save
。它适用于这两种情况。
你好什么是什么管理对象上下文保存并refreshObject之间的区别:mergeChanges:
[self.context refreshObject:site mergeChanges:YES];
和
[self.context save:nil];
之间的区别有时我用他们两个,有时我只用save
。它适用于这两种情况。
-save:
节省您在上下文中任何托管对象所做的更改。这意味着它们被刷新到持久性存储协调器,然后将它们写入永久性存储区,永久性存储区将它们写入磁盘(假设磁盘备份存储区)。
在另一方面,-refreshObject:mergeChanges:
确实完全不同的东西。它从读取对象从持久存储协调器(从持久存储中读取,等等)的当前状态。为mergeChanges
传递YES
意味着保持对该对象的任何本地修改,并且仅更新未更改的字段。这几乎与-save:
相反。
作为一个简单的思想实验,如果你运行-save:
,然后终止您的应用程序,在下次启动修改后的数据仍然可用。如果您运行-refreshObject:mergeChanges:
,然后终止您的应用,则您的任何本地更改都将丢失。
所以最好使用refreshObject,并在appWillResignActive打电话-save:? – Devfly 2013-03-15 22:51:50
@Devfly:不,我对你为什么认为'-refreshObject:'在保存之前远程适合使用感到困惑。 – 2013-03-15 22:52:29
@Devfly:您可以使用'-refreshObject:mergeChanges:'如果您知道对象已从另一个上下文更改,并且您希望更改在当前上下文中可见。而已。 – 2013-03-15 22:53:02