ios - 带有 Coredata 同步问题的 WatchKit 扩展

标签 ios objective-c iphone core-data watchkit

我正在使用 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/

相关文章:

ios - 对多个 Xcode 目标使用相同的版本号 Info.plist

ios - Google Plus 使用 UIWebView 登录 iOS

iphone - 如何从越狱的 iOS 设备上的 bundle id 快速获取应用程序的目录?

ios - 使用 UITableView indexPath 访问 NSMutableArrays 的多维 NSMutableArray

ios - 在 UILabel.attributedText *not* 蓝色和 *not* 下划线

iphone - iOS Sqlite3 删除查询不删除行

ios - 为什么 UIImage 在 Slider 中裁剪后变得模糊?

javascript - 设备 (ios/Android) 和桌面上的 WebSQL 数据库大小差异

ios: UITableViewCell 在滚动时消失

ios - 如何使用 Core Graphics 绘制点?