2014-09-18 1 views
3

Возможно, с NSManagedObjectContextObjectsDidChangeNotification получить уведомление только при изменении конкретного объекта?NSManagedObjectContextObjectsDidChangeNotification для одного объекта

Я хочу обновить свое представление, когда моя контактная информация или аватар изменится, но с NSManagedObjectContextObjectsDidChangeNotification. Я получаю уведомление каждый раз, когда что-то изменяется в базе данных.

Это можно сделать с помощью NSManagedObjectContextObjectsDidChangeNotification?

ответ

4

Я не верю, что это возможно только для определенного объекта. Однако уведомление предоставляет информацию о том, какие объекты были изменены. Уведомление содержит словарь (UserInfo), который содержит 3 ключа:

  • 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]) { 
    } 
} 
+0

Обратите внимание, что лучше всего искать NSManagedObjectID, а не NSManagedObject в пользовательской информации уведомления об изменении. – quellish

 Смежные вопросы

  • Нет связанных вопросов^_^