【问题标题】:iOS NSManagedObjectContext - is it possible to get or send a notification when all changes is saved?iOS NSManagedObjectContext - 保存所有更改后是否可以获取或发送通知?
【发布时间】:2023-04-04 19:44:01
【问题描述】:

我使用 Core Data - 我已经注册并正在监听 NSManagedObjectContextDidSaveNotification:s 我有一个数据集合(来自 JSON),我想保存,在保存所有对象之后,我想得到某种通知。当前似乎在保存每个对象后发送此通知。是否有某种内置解决方案可以获取我想要的通知?如果没有,我怎么能/应该这样做?

【问题讨论】:

  • 确定 MOC 的保存时间由您控制?
  • 是的,我愿意。但我不知道何时保存所有对象。我进行异步保存,有时保存过程需要一些时间。
  • 如果您要保存多次,则需要计算保存次数和保存完成次数并自行管理。

标签: ios objective-c cocoa-touch core-data nsmanagedobjectcontext


【解决方案1】:

在您保存特定批次的对象后,不会发布内置通知。 Core Data 真的不知道你的集合中有多少对象,所以它无法知道你已经到了它的尽头。

每次在托管对象上下文上调用 save: 时,您都会得到 NSManagedObjectContextDidSaveNotification。您可以等到处理完所有对象后再保存,这意味着只有一个 NSManagedObjectContextDidSaveNotification

更好的解决方案是在您知道已完成收藏后发布您自己的通知。定义一个名为 JSONUpdatesCompleteNotification 之类的字符串常量,并在您上次调用 save: 之后发布一个具有该名称的通知。

NSString *JSONUpdatesCompleteNotification = @"JSONUpdatesCompleteNotification";

然后,当你知道你已经完成时,

[[NSNotificationCenter defaultCenter] postNotificationName:JSONUpdatesCompleteNotification object:self];

确保您在需要了解的任何地方都观察到此通知,然后您就完成了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2019-04-16
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多