Обновить контекст управляемого объекта в фоновом потоке - PullRequest
1 голос
/ 23 февраля 2012

На моем iPhone я использую контекст управляемого объекта (MOC) в фоновом потоке, чтобы синхронизировать сообщения с моего сервера с сообщениями, хранящимися в моей базе данных. Для предотвращения дублирования я извлекаю идентификаторы новых сообщений, используя предикаты, и проверяю, есть ли эти сообщения в базе данных. После завершения импорта я объединяю MOC в фоновом потоке с моими MOC по умолчанию в основном потоке. Все идет нормально.

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

С наилучшими пожеланиями Карстен

1 Ответ

0 голосов
/ 25 февраля 2012

Вы можете получать уведомления об изменениях в основном потоке, наблюдая за NSManagedObjectContextDidSaveNotification :

[[NSNotificationCenter defaultCenter]
    addObserver:self
    selector:@selector(updateMessages:)
    name:NSManagedObjectContextDidSaveNotification
    object:mainManagedObjectContext];

Ваш updateMessages: метод принимает параметр NSNotification:

- (void)updateMessages:(NSNotification *)notification
{
    [myManagedObjectContext mergeChangesFromContextDidSaveNotification:notification];
}

Вы можете использовать [уведомления пользователяInfo] для получения более подробной информации об обновлении.

...