iOS NSManagedObjectContext-保存所有更改时是否可以获取或发送通知?

iOS NSManagedObjectContext-保存所有更改时是否可以获取或发送通知?,ios,objective-c,cocoa-touch,core-data,nsmanagedobjectcontext,Ios,Objective C,Cocoa Touch,Core Data,Nsmanagedobjectcontext,我使用核心数据-我已经注册并正在监听NSManagedObjectContextDidSaveNotification:我有一个要保存的数据集合(来自JSON),在保存所有对象之后,我希望得到某种通知。目前看来,此通知是在保存每个对象后发送的。是否有某种内置的解决方案可以获得我想要的通知?如果没有,我该怎么做 保存特定批对象后,不会发布任何内置通知。核心数据实际上不知道您的集合中有多少对象,因此它无法知道您已经到达了它的末尾 每次在托管对象上下文上调用save:时,都会收到nsmanagedob

我使用核心数据-我已经注册并正在监听
NSManagedObjectContextDidSaveNotification
:我有一个要保存的数据集合(来自JSON),在保存所有对象之后,我希望得到某种通知。目前看来,此通知是在保存每个对象后发送的。是否有某种内置的解决方案可以获得我想要的通知?如果没有,我该怎么做

保存特定批对象后,不会发布任何内置通知。核心数据实际上不知道您的集合中有多少对象,因此它无法知道您已经到达了它的末尾

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

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

NSString *JSONUpdatesCompleteNotification = @"JSONUpdatesCompleteNotification";
后来,当你知道你完成了

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

确保您在任何需要了解此通知的地方都遵守此通知,并且您已经完成了。

是否确定您可以控制MOC的保存时间?是的,我可以。但我不知道什么时候所有的对象都被保存了。我以异步方式保存,有时保存过程需要一些时间。如果要保存多次,则需要计算保存次数和保存完成次数,然后自己管理。