带有背景上下文的核心数据通知

Posted

技术标签:

【中文标题】带有背景上下文的核心数据通知【英文标题】:Core Data notifications with background contexts 【发布时间】:2015-06-03 13:23:31 【问题描述】:

首先我使用的是 MagicalRecord。我刚刚使用saveWithBlock 方法转换了一些代码以保存在后台。它工作得很好,但我的核心数据通知没有被调用,特别是NSManagedObjectContextObjectsDidChangeNotification。我认为这是因为保存是在新的背景上下文中完成的,但我认为当它们合并到主上下文时它会被调用。

我在这里做错了什么?

【问题讨论】:

如果任何 managedObjectContext 保存,在任何线程中,它都应该触发这个通知。请仔细查看您可能正在观察一些未保存的上下文。 我正在观察 MR_defaultContext。 【参考方案1】:

听起来您观察到了错误的通知。 NSManagedObjectContextObjectsDidChangeNotification 不会在您保存更改时发布。当从上下文中获取的对象的属性值发生更改时,它会被发布。如果您想要保存通知,您需要 NSManagedObjectContextDidSaveNotificationNSManagedObjectContextWillSaveNotification

【讨论】:

嗨,汤姆,谢谢。我实际上正在观察 didChangedidSave 并且两者都没有开火。

以上是关于带有背景上下文的核心数据通知的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 5 中使用 UIManagedDocument 和父/子上下文导入核心数据背景

后台核心数据:使用单独的上下文和通知,但不使用新值更新数据库

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

带有来自基本控制器中 AppDelegate 的核心数据对象上下文的 SIGABRT

核心数据:更新子上下文

从核心数据中删除/添加到核心数据后,带有列表的 SwiftUI TabView 不刷新