将核心数据对象发送到 "read only" Apple Watch App

Sending Core Data objects to "read only" Apple Watch App

我正在尝试开发 watchOS 2 应用程序以配合我的 iOS 应用程序。 iOS 应用程序利用核心数据,而 Apple Watch 应用程序将只是一个 "read only" 客户端并显示来自 iOS 应用程序的数据。

我已经阅读了一些有关管理两个数据存储的内容,但这似乎有点过分了。我只想在启动时将数据传输到手表应用程序,然后在 phone 上发生变化时发送后台传输。

我的问题是最初如何将此信息发送到手表应用程序?我不认为我可以将实际数据对象发送到手表应用程序。我是否需要将对象转换为字典并通过 WatchConnectivity API 发送所有相关信息?

你的方法听起来不错。如果您不玩游戏来更改手表上的数据,那么在您的手表应用程序上镜像您的 CoreData 数据库确实有点矫枉过正。

所以使用Application Context通过后台传输发送数据是正确的选择。这只有一个警告:用于传输数据的 updateApplicationContext 方法只接受 属性 列表值的字典。换句话说,您只能发送可以添加到 属性 列表的对象:

  • 数组
  • 词典
  • 字符串
  • 数据(NSData)
  • 日期(NSDate)
  • 整数
  • 浮点值
  • 布尔值

因此,您必须先将核心数据对象转换为仅包含这些类型的字典,然后才能发送它们。

这有点费力,但即使您想在手表端镜像您的数据库,您也必须这样做,因为在 watchOS2 中,您不能再使用 App Groups 来共享 CoreData 文件。