具有Coredata同步问题的WatchKit扩展

时间:2015-03-10 14:34:58

标签: ios objective-c iphone core-data watchkit

我正在使用WatchKit为Apple Watch制作应用程序。

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

这一切都运行正常,他们都能很好地读取这个对象,使用App Group共享SQL文件。问题是,当应用程序对对象进行更改时,我希望手表直接将其选中,以便更新其界面。

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

首先,是否有一种方法可以在应用程序中扩展CoreData保存而不必使用MMWormhole?但更重要的是,我在扩展中的后续获取请求中最终得到旧数据的错误是什么?我原以为在上下文中执行提取会查询存储,并且由于两个应用程序都指向同一个db文件,因此它会获取新数据。保存后是否有延迟,是否以某种方式缓存了获取请求,或者我只是误解了某些内容?

1 个答案:

答案 0 :(得分:0)

您需要使用NSManagedContext refreshObject来更新对象。由于扩展和iOS应用程序在不同的内存空间中运行,因此您需要使用类似MMWormhole的通知进行通知。有关详细信息,请参阅此Core Data with WatchKit and iOS App