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

时间:2013-05-08 14:09:30

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

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

1 个答案:

答案 0 :(得分:1)

在保存特定批次的对象后,没有内置通知会被发布。核心数据真的不知道你的集合中有多少个对象,所以它无法知道你已经到了它的末尾。

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

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

NSString *JSONUpdatesCompleteNotification = @"JSONUpdatesCompleteNotification";

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

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

请务必在您需要了解的任何地方观察此通知,并且您已完成。