CoreData объединяет данные из двух разных контекстов - PullRequest
0 голосов
/ 18 января 2012

Я обновляю свои основные данные в фоновом потоке. Я настроил политику. Класс обновлений обновляет и сохраняет данные.

NSManagedObjectContext *defaultContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{

        NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
        [context setPersistentStoreCoordinator:[defaultContext persistentStoreCoordinator]];
        [context setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];               //step 2
        [defaultContext setMergePolicy:NSMergeByPropertyStoreTrumpMergePolicy];

        Updater *updater = [[Updater alloc] initWithUsername:@"test2" 
                                                    password:@"test2"];
        [updater setContext:context];
        [updater update];
        [updater release];

        [self setUpdating:NO];

        dispatch_sync(dispatch_get_main_queue(), ^{
            completion();
        });
    });

Мой друг сказал мне, что мне нужно какое-то уведомление, чтобы уведомить мой исходный контекст по умолчанию для обновления данных. Мне это нужно? Или то, что я сделал, будет достаточно? Если да, то как мне это сделать?

1 Ответ

0 голосов
/ 18 января 2012

Да, вам нужно соблюдать NSManagedObjectContextDidSaveNotification, чтобы объединить эти два контекста.

Я узнаю из "// шага 2", что вы видели статью ОСНОВНЫЕ ДАННЫЕ И НИТИ, БЕЗ ГОЛОВНОЙ СРЕДЫ , поэтому я бы предложил вам еще раз просмотреть ее и необходимый код для наблюдения уведомления также упоминается в этой статье.

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