在Context上应用回滚时,使用NSManagedObjectContextDidSaveNotification回滚更新了信息

时间:2018-07-26 11:07:49

标签: ios objective-c core-data iphonecoredatarecipes

我正在将CoreData与多个上下文一起使用(而不是“父子”)。因此,我正在使用NSManagedObjectContextDidSaveNotification观察者来更新不同上下文中的信息。我面临的一个有线问题是,使用NSManagedObjectContextDidSaveNotification在主线程上更新后台线程上的已保存数据时,如果将来我在主线程上下文上应用回滚,则会回滚更新的信息。

谁能解释为什么会这样?

NSMergePolicy *policy = [[NSMergePolicy alloc] initWithMergeType:NSMergeByPropertyStoreTrumpMergePolicyType];
    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if ([NSThread isMainThread]) {// main thread context
        if (!self.managedObjectContextMainThread) {
            self.managedObjectContextMainThread = [[NSManagedObjectContext alloc] init];
            [self.managedObjectContextMainThread setMergePolicy:policy];
            [self.managedObjectContextMainThread setPersistentStoreCoordinator:coordinator];
        }
    }else{
        context = [[NSManagedObjectContext alloc] init];
        [context setPersistentStoreCoordinator:coordinator];
        [context setMergePolicy:policy];
    }

0 个答案:

没有答案