save:和进程待定更改之间的区别:在Core Data中

时间:2011-04-19 16:06:20

标签: iphone objective-c core-data

我有一个NSManagedObjectContext,我对模型进行了一些更改,然后......“提交”事务,执行之间的区别是什么:

[context save:&error];

[context processPendingChanges];

看起来他们都做同样的事情。

1 个答案:

答案 0 :(得分:22)

简而言之,processPendingChanges会更改当前对象图的状态。 save会将当前对象图保存到磁盘。

致电save会自动致电processPendingChanges

如果您想到文字处理器中的文本文件,save类似于将文档保存到磁盘。

processPendingChanges类似于告诉文字处理器在编辑后更新文档的内部状态,但不保存到磁盘。这通常会触发对UI的更新,例如更新显示的单词或行数,执行任何必要的格式化等等......

根据我的经验,对于iPhone,您很少需要processPendingChanges.我相信它主要用于Mac OS X并处理高级或复杂的撤消管理或更新UI绑定。

对于iPhone,通常会触发NSFetchedResultsControllers来更新表视图。即便如此,这种情况也很少见。如果您不确定是否坚持使用save

有关详细信息,请在文档中研究NSManagedObjectContextDidSaveNotificationNSManagedObjectContextObjectsDidChangeNotification之间的区别。