save:和processPendingChanges之间的区别:在CoreData中

fer*_*tar 12 iphone core-data objective-c

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

[context save:&error];
Run Code Online (Sandbox Code Playgroud)

[context processPendingChanges];
Run Code Online (Sandbox Code Playgroud)

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

ama*_*ttn 22

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

通话saveprocessPendingChanges自动拨打电话.

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

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

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

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

有关详细信息,请研究文档之间NSManagedObjectContextDidSaveNotification和之间的区别NSManagedObjectContextObjectsDidChangeNotification.