一个实体的NSManagedObjectContextObjectsDidChangeNotification

时间:2014-09-18 22:48:15

标签: ios objective-c core-data nsmanagedobjectcontext

NSManagedObjectContextObjectsDidChangeNotification只有在特定实体发生变化时才能获得通知吗?

我想在我的联系信息或头像更改时更新我的​​视图,但是使用NSManagedObjectContextObjectsDidChangeNotification我每次在数据库上发生更改时都会收到通知。

使用NSManagedObjectContextObjectsDidChangeNotification可以做到这一点吗?

1 个答案:

答案 0 :(得分:4)

我不相信它只能触发特定实体。但是,通知确实提供了有关哪些对象已更改的信息。通知包含一个包含3个键的字典(userInfo):

  • NSDeletedObjectsKey - 已删除的所有对象的数组
  • NSInsertedObjectsKey - 已添加/插入的所有对象的数组
  • NSUpdatedObjectsKey - 已修改的所有对象的数组

您可以迭代这些数组的内容,并确定您的特定对象是否已更改。粗略概述如下:

- (void) handleObjectsChangedNotification:(NSNotification*) notification {
    // Iterate over all of the deleted objects
    for (NSManagedObject* object in notification.userInfo[NSDeletedObjectsKey]) {
    }

    // Iterate over all of the new objects
    for (NSManagedObject* object in notification.userInfo[NSInsertedObjectsKey]) {
    }

    // Iterate over all of the modified objects
    for (NSManagedObject* object in notification.userInfo[NSUpdatedObjectsKey]) {
    }
}