我有一个NSManagedObjectContext,我对模型进行了一些更改,然后......“提交”事务,执行之间的区别是什么:
[context save:&error];
和
[context processPendingChanges];
看起来他们都做同样的事情。
答案 0 :(得分:22)
简而言之,processPendingChanges
会更改当前对象图的状态。 save
会将当前对象图保存到磁盘。
致电save
会自动致电processPendingChanges
。
如果您想到文字处理器中的文本文件,save
类似于将文档保存到磁盘。
processPendingChanges
类似于告诉文字处理器在编辑后更新文档的内部状态,但不保存到磁盘。这通常会触发对UI的更新,例如更新显示的单词或行数,执行任何必要的格式化等等......
根据我的经验,对于iPhone,您很少需要processPendingChanges.
我相信它主要用于Mac OS X并处理高级或复杂的撤消管理或更新UI绑定。
对于iPhone,通常会触发NSFetchedResultsControllers来更新表视图。即便如此,这种情况也很少见。如果您不确定是否坚持使用save
有关详细信息,请在文档中研究NSManagedObjectContextDidSaveNotification
和NSManagedObjectContextObjectsDidChangeNotification
之间的区别。