我有一个 NSManagedObjectContext,我对模型进行了一些更改,然后......“提交”事务,这样做有什么区别:
[context save:&error];
和
[context processPendingChanges];
似乎他们都在做同样的事情。
最佳答案
简而言之,processPendingChanges
改变了当前对象图的状态。 save
将当前对象图保存到磁盘。
调用 save
会自动调用 processPendingChanges
。
如果您想到文字处理器中的文本文件,save
类似于将文档保存到磁盘。processPendingChanges
类似于告诉文字处理器在编辑后更新文档的内部状态,但不保存到磁盘。这通常会触发对 UI 的更新,例如更新显示的字数或行数、进行任何必要的格式设置等...
根据我的经验,对于 iPhone,您很少需要 processPendingChanges.
我相信它主要用于 Mac OS X 并处理高级或复杂的撤消管理或更新 UI 绑定(bind)。
对于 iPhone,这通常是为了触发 NSFetchedResultsControllers 更新表 View 。即便如此,这种情况也很少见。如果您不确定,请坚持使用 save
有关更多信息,请在文档中研究 NSManagedObjectContextDidSaveNotification
和 NSManagedObjectContextObjectsDidChangeNotification
之间的区别。
关于iphone - 保存 : and processPendingChanges: in CoreData 之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5719326/