iOS8 扩展:将 CoreData 与包含的应用程序同步

Posted

技术标签:

【中文标题】iOS8 扩展:将 CoreData 与包含的应用程序同步【英文标题】:iOS8 Extension : synchronize CoreData with containing app 【发布时间】:2014-08-13 08:47:43 【问题描述】:

我正在开发一个小部件,它将显示一些信息,这些信息也存在于我的应用程序中。 我在应用扩展和包含应用之间共享了我的 CoreData 存储,没有问题。

现在,当从我的 Widget 将数据保存到持久存储时,我需要在我的应用程序中捕获事件以合并 NSManagedObjectContext(反之亦然) 如果我不这样做,则在 Widget 保存后尝试从包含应用程序中保存上下文会使应用程序崩溃。

注册到 NSManagedObjectContextDidSaveNotification 在这里没有帮助。

有人能告诉我怎么做吗?

【问题讨论】:

有关于这个问题的消息吗?我一直有完全相同的问题,似乎无法找到解决方案... 还没有,我一直在寻找无济于事... 【参考方案1】:

我认为最好的方法是在 ViewDidLoad 上重置应用扩展的上下文,然后重新获取所有 NSManagedObject。

为了更新应用程序,我重置了 didBecomeActive 上的上下文,但仅在应用程序扩展通知应用程序需要更新时。这可以通过将布尔值传递给您的应用程序组 NSUserDefaults 来完成。通过这样做,您不会在不需要时重置上下文,因此您不会在每次打开应用时都失去性能。

【讨论】:

以上是关于iOS8 扩展:将 CoreData 与包含的应用程序同步的主要内容,如果未能解决你的问题,请参考以下文章

核心数据:将数据访问与应用程序和包含的扩展同步

iOS8 中的扩展 - 由于没有系统应用程序而终止

MagicalRecord (CoreData) + Today Extension (iOS8)... 他们会玩吗?

iOS8扩展插件开发配置

如何检测在 iOS 8 上包含应用程序时启用了应用程序扩展?

在IOS8中使用共享扩展时如何获取源应用程序的bundleId