Нужно ли наблюдать NSManagedObjectContextDidSaveNotification от каждого NSManagedObjectContext, который я создаю? - PullRequest
0 голосов
/ 16 февраля 2012

Когда мы впервые добавили Core Data в наше приложение, учебник, которому мы следовали, создал NSManagedObjectContext в нашем делегате приложения. Рекомендуется, чтобы при использовании Core Data в других потоках мы добавляли наблюдателя для обновления нашего основного контекста при сохранении контекста потока, например:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(mergeChanges:)
                                             name:NSManagedObjectContextDidSaveNotification
                                           object:self.managedObjectContext];

Это случается один раз в applicationDidFinishLoadingWithOptions:. Тем не менее, документация для NSManagedObjectContext гласит:

Некоторые системные структуры используют Core Data для внутреннего использования. Если вы зарегистрируетесь для получения этих уведомлений из всех контекстов (путем передачи nil в качестве параметра объекта методу addObserver…), вы можете получить неожиданные уведомления, которые трудно обработать.

Это подсказывает мне, что параметром объекта должен быть контекст, который сохраняется (в моем случае фоновый контекст), а не основной контекст. Это тот случай? Нужно ли наблюдать NSManagedObjectContextDidSaveNotification от каждого NSManagedObjectContext, который я создаю?

1 Ответ

4 голосов
/ 17 февраля 2012

Simon,

Объект в методе -addObserver:selector:name:object: является источником уведомлений.В вашем случае это должен быть фон NSManagedObjectContext.

Должны ли вы наблюдать каждый контекст, который вы создаете?Как и во всем, это зависит.Например, иногда вы хотите использовать контекст в качестве блокнота и никогда ничего от него не спасете.Зачем наблюдать это?В общем, вы хотите наблюдать любые контексты, которые изменяют постоянное хранилище.

Andrew

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...