核心数据:更新子上下文

Posted

技术标签:

【中文标题】核心数据:更新子上下文【英文标题】:Core Data: update child context 【发布时间】:2015-01-18 15:14:03 【问题描述】:

如果我有一个 NSManagedObjectContext 和它的两个子级,一个用于从 Web 服务 (A) 后台更新,另一个用于 UI 线程 (B) 中的操作,问题是: 在后台上下文 (A) 更新了新信息并将其保存到父上下文后,如何通知 NSManagedObjectContext B 关于父托管对象上下文的更改?

谢谢

【问题讨论】:

【参考方案1】:

如果我理解正确,您可以从上下文 B 中观察 DidSaveNotification。像这样:

self.observer = [[NSNotificationCenter defaultCenter] addObserverForName:NSManagedObjectContextDidSaveNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) 
    NSManagedObjectContext *notMoc = [note object];
    if (![weakSelf.managedObjectContext isEqual:notMoc]) 
        [weakSelf.managedObjectContext performBlock:^
            [weakSelf.managedObjectContext mergeChangesFromContextDidSaveNotification:note];
        ];
    
];

【讨论】:

如果您使用 MagicalRecord,[context MR_observeContext:other] 将为您执行此操作

以上是关于核心数据:更新子上下文的主要内容,如果未能解决你的问题,请参考以下文章

保存子上下文时获取 NSFetchedResultsController 的批量更新

CoreData:带有子主上下文的私有上下文 - FetchedResultsController 未获得更新

NSFetchRequest 不读取更新的行 [关闭]

核心数据父/子上下文保存失败

带有子上下文的核心数据多线程

在子上下文中保存核心数据不起作用