具有核心数据同步问题的监视套件扩展



我正在为带有WatchKit的Apple Watch制作一个应用程序。

我有一个 NSManagedObject,手机上的应用程序和手表上的应用程序都从中获取数据。数据库中应该只有一个这种类型的对象,因此两个目标都应该访问存储中的同一对象,尽管显然不是同一个实例。

这一切都工作正常,他们都可以很好地读取此对象,使用应用程序组共享SQL文件。问题是,当应用程序对对象进行更改时,我希望手表立即拾取它,以便它可以更新其界面。

我正在使用 MMWormhole 在保存对象时向手表发送通知,发生这种情况时,我会对扩展中的上下文进行新的获取。但是,当我进行此提取时,扩展中对象上的任何数据都没有更改以反映应用程序中对象的状态。它仍然与在应用程序中调用保存之前完全相同。

那么首先,有没有办法在应用程序中保存的 CoreData 扩展中收到通知,而无需使用 MMWormhole?但更重要的是,我做错了什么,最终在扩展中的后续获取请求中使用旧数据?我本以为在上下文上执行获取会查询商店,并且由于两个应用程序都指向同一个数据库文件,它将获取新数据。保存后是否有延迟,获取请求是否以某种方式缓存或我只是误解了什么?

您需要使用 NSManagedContext refreshObject 来更新对象。 由于扩展程序和iOS应用程序在不同的内存空间中运行,因此您需要使用MMWormhole之类的东西来发送通知。 请参阅此处了解更多信息 Core Data with WatchKit 和 iOS App

最新更新