【问题标题】:difference between save: and processPendingChanges: in CoreData在 CoreData 中 save: 和 processPendingChanges: 之间的区别
【发布时间】:2011-04-19 16:06:19
【问题描述】:

我有一个 NSManagedObjectContext,我对模型进行了一些更改,然后......“提交”交易,这样做有什么区别:

[context save:&error];

[context processPendingChanges];

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

【问题讨论】:

    标签: iphone objective-c core-data


    【解决方案1】:

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

    调用save会自动调用processPendingChanges

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

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

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

    对于 iPhone,这通常是为了触发 NSFetchedResultsControllers 来更新表视图。即便如此,这也有些罕见。如果您不确定,请坚持使用save

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-08
      • 2019-03-23
      • 2018-12-30
      • 2014-04-12
      相关资源
      最近更新 更多