Ios 合并主上下文块UI

Ios 合并主上下文块UI,ios,core-data,merge,Ios,Core Data,Merge,我正在处理核心数据,学习如何完成工作。我目前正在读取主上下文中的所有数据,并将所有数据保存在后台上下文中。我注册了后台上下文保存时的通知。当我合并私有上下文中保存的更改时,ui会在瞬间停止。有什么办法可以防止这个小故障吗 以下是我保存的上下文的外观: @synchronized(self) { [self.mainManagedObjectContext performBlock:^{ [self.mainManagedObjectContext mergeChanges

我正在处理核心数据,学习如何完成工作。我目前正在读取主上下文中的所有数据,并将所有数据保存在后台上下文中。我注册了后台上下文保存时的通知。当我合并私有上下文中保存的更改时,ui会在瞬间停止。有什么办法可以防止这个小故障吗

以下是我保存的上下文的外观:

@synchronized(self) {
    [self.mainManagedObjectContext performBlock:^{
        [self.mainManagedObjectContext mergeChangesFromContextDidSaveNotification:notification];
        [[NSNotificationCenter defaultCenter] postNotificationName:ModelDidUpdateNotification
                                                            object:self.mainManagedObjectContext
                                                          userInfo:[notification userInfo]];
    }];
}
我尝试删除多行代码,当我删除合并时,故障停止。但如果我把它拿出来。我没有在主上下文中得到所需的更改

以下是后台上下文保存:

[self.backgroundMainManagedObjectContext performBlock:^
 {
     saveBlock(self.backgroundMainManagedObjectContext);

     if([[NSThread currentThread] isMainThread])
     {
         NSLog(@"Saving on main thread!!");
     }

     if([self.backgroundMainManagedObjectContext hasChanges])
     {
         [self.backgroundMainManagedObjectContext save:&error];
     }
 }];

就核心数据而言,我真的不知道我在做什么。所以,任何帮助都将是伟大的

你试过在主线程上做所有事情吗?您知道,在保存主上下文之前,如果背景上下文是主上下文的子上下文,则不会写入存储。我的背景上下文不是主上下文的子上下文。它们只是共享同一个持久存储。不过,我会尝试在主线程上完成所有操作。我还将尝试将bg上下文设置为子上下文。谢谢抱歉没有直接回答,我会以稍微不同的方式编写代码,所以明天我会写更多(已经晚了)。同时,如果您可以访问本书,请阅读第5章线程,特别是5.5父子NSManagedObjectContext实例。来自实用书架—“核心数据,第二版,iOS、OS X和iCloud的数据存储和管理”(2013年1月,Marcus S.Zarra)。