CoreData合并来自两个不同上下文的数据

时间:2012-01-18 03:47:45

标签: objective-c ios cocoa-touch core-data

我正在后台线程中更新我的核心数据。我已经制定了政策。更新程序类更新并保存数据。

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 :(得分:0)

是的,您需要观察NSManagedObjectContextDidSaveNotification以合并这两个上下文。

我从“//步骤2”中认识到您已经看过文章CORE DATA AND THREADS, WITHOUT THE HEADACHE所以我建议您再次查看它,并且本文还引用了necessary code通知观察。