我正在使用 WatchKit 为 Apple Watch 制作应用程序。
我有一个 NSManagedObject,手机上的应用程序和 watch 上的应用程序都从中获取数据。数据库中应该只有一个这种类型的对象,因此两个目标应该访问存储中的同一个对象,尽管显然不是同一个实例。
这一切都很好,他们都可以很好地读取这个对象,使用应用程序组来共享 SQL 文件。问题是,当应用程序对对象进行更改时,我希望 watch 立即获取它,以便它可以更新其界面。
当对象被保存时,我正在使用 MMWormhole 向 watch 发送通知,当发生这种情况时,我会在扩展中的上下文上进行新的提取。但是,当我执行此获取时,对象上的任何数据都没有在扩展中更改以反射(reflect)应用程序中对象的状态。它仍然与在应用程序中调用保存之前完全相同。
那么首先,有没有办法在应用程序中扩展CoreData保存时得到通知,而不必使用MMWormhole?但更重要的是,我在扩展中的后续获取请求中最终得到旧数据,我做错了什么?我原以为在上下文中进行提取会查询商店,并且由于两个应用程序都指向同一个数据库文件,因此它会获取新数据。保存后是否有延迟,是否以某种方式缓存了获取请求,或者我只是误解了什么?
最佳答案
您将需要使用 NSManagedContext refreshObject 来更新您的对象。由于扩展程序和 iOS 应用程序在不同的内存空间中运行,因此您需要使用 MMWormhole 之类的东西来进行通知。更多信息请参见 Core Data with WatchKit and iOS App
关于ios - 带有 Coredata 同步问题的 WatchKit 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28966506/