iOS NSManagedObjectContext - 保存所有更改后是不是可以获取或发送通知?
Posted
技术标签:
【中文标题】iOS NSManagedObjectContext - 保存所有更改后是不是可以获取或发送通知?【英文标题】:iOS NSManagedObjectContext - is it possible to get or send a notification when all changes is saved?iOS NSManagedObjectContext - 保存所有更改后是否可以获取或发送通知? 【发布时间】:2013-05-08 14:09:29 【问题描述】:我使用 Core Data - 我已经注册并正在监听 NSManagedObjectContextDidSaveNotification
:s 我有一个数据集合(来自 JSON),我想保存,在保存所有对象之后,我想得到某种通知。当前似乎在保存每个对象后发送此通知。是否有某种内置解决方案可以获取我想要的通知?如果没有,我怎么能/应该这样做?
【问题讨论】:
确定 MOC 的保存时间由您控制? 是的,我愿意。但我不知道何时保存所有对象。我进行异步保存,有时保存过程需要一些时间。 如果您要保存多次,则需要计算保存次数和保存完成次数并自行管理。 【参考方案1】:在您保存特定批次的对象后,不会发布内置通知。 Core Data 真的不知道你的集合中有多少对象,所以它无法知道你已经到了它的尽头。
每次在托管对象上下文上调用 save:
时,您都会得到 NSManagedObjectContextDidSaveNotification
。您可以等到处理完所有对象后再保存,这意味着只有一个 NSManagedObjectContextDidSaveNotification
。
更好的解决方案是在您知道已完成收藏后发布您自己的通知。定义一个名为 JSONUpdatesCompleteNotification 之类的字符串常量,并在您上次调用 save:
之后发布一个具有该名称的通知。
NSString *JSONUpdatesCompleteNotification = @"JSONUpdatesCompleteNotification";
然后,当你知道你已经完成时,
[[NSNotificationCenter defaultCenter] postNotificationName:JSONUpdatesCompleteNotification object:self];
确保您在需要了解的任何地方都观察到此通知,然后您就完成了。
【讨论】:
以上是关于iOS NSManagedObjectContext - 保存所有更改后是不是可以获取或发送通知?的主要内容,如果未能解决你的问题,请参考以下文章
{python之IO多路复用} IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO