小编Has*_*ein的帖子

使用mergeChangesFromContextDidSaveNotification:saveNotification我没有在主线程中显示更改

我使用后台线程来执行长时间运行的任务,包括从服务中提取数据并通过CoreData将记录插入数据库.正如许多答案所示,我正在观察NSManagedObjectContextDidSaveNotification通知.我正在使用这两种方法.在mergeChanges方法中,我在通知对象中看到我的插入,但在两个方法完成后,我的主MOC仅显示后台线程之前的更改.为什么它不反映后台线程的新变化.我错过了什么?

- (void) registerContextDidSaveNotificationForManagedObjectContext:       (NSManagedObjectContext*) moc {
    NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
    [nc addObserver:self
           selector:@selector(mergeChanges:)
               name:NSManagedObjectContextDidSaveNotification
             object:moc];
}

- (void)mergeChanges:(NSNotification *)notification {
    //AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    NSManagedObjectContext *mainContext = self.managedObjectContext;

    // Merge changes into the main context on the main thread
    [mainContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
                                  withObject:notification
                               waitUntilDone:YES];
}
Run Code Online (Sandbox Code Playgroud)

core-data objective-c ios

5
推荐指数
1
解决办法
4769
查看次数

标签 统计

core-data ×1

ios ×1

objective-c ×1