iphone - 保存: and processPendingChanges: in CoreData之间的区别

标签 iphone objective-c core-data

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

[context save:&error];

[context processPendingChanges];

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

最佳答案

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

调用 save 将自动调用 processPendingChanges

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

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

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

对于 iPhone,这通常是为了触发 NSFetchedResultsControllers 来更新 TableView 。即使那样,这种情况也很少见。如果您不确定,请坚持使用 save

有关更多信息,请查看文档中 NSManagedObjectContextDidSaveNotificationNSManagedObjectContextObjectsDidChangeNotification 之间的区别。

关于iphone - 保存: and processPendingChanges: in CoreData之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5719326/

相关文章:

IOS 蓝牙 LE 扫描设备未添加到 uitableview

ios - 将图像转换为 SceneKit 节点

ios - 在主项目中使用子项目的xcdatamodelId

iphone - 为什么在 dismissViewControllerAnimated 之后父框架没有保持相同的大小?

ios - 如果用户使用非 iOS 帐户,则以编程方式将新日历添加到日历应用程序

javascript - 您如何获得 API Key 以访问服务预授权?

ios - 如何在 iOS 中动态更改 UITabBar 图像

swift - 核心数据 - 如何在更多具有关系的实体中插入值(Swift)?

objective-c - NSFetchedResultsController objectAtIndex、objectAtIndexPath、indexPathForObject 不一致

iphone - "Attempt to create two animations for cell"ios 崩溃