如何在AppleWatch OS2上使用iPhone上的coredata?

Rom*_*zak 12 core-data ios swift apple-watch

我尝试通过fileTransfer方法发送它:

let modelURL = NSBundle.mainBundle().URLForResource("my_app", withExtension: "momd")!

WCSession.defaultSession().transferFile(modelURL, metadata:nil)
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

可选(错误域= WCErrorDomain代码= 7008"传递给WatchConnectivity API的参数无效."UserInfo = {NSLocalizedDescription =传递给WatchConnectivity API的参数无效.,NSLocalizedRecoverySuggestion =仅传递正确类型的参数.})

你知道如何在iPhone和WatchOS2之间同步CoreData吗?

ccj*_*sen 5

您正在尝试发送整个"momd"目录.WatchConnectivity的传输文件API似乎不支持传输目录,因此在-session中返回错误:didFinishFileTransfer:error:

要解决此问题,您有几个选择:

  1. 将momd目录序列化为单个文件,然后在接收端反序列化(使用zip等等)
  2. 创建传输格式,以便从数据库传输特定信息.
    • 该项目将从数据库中提取一个特定的部分,并将其发送出去.接收方然后将该内容添加到其自己的数据库中.您可能会将transferUserInfo API与此解决方案一起使用.

解决方案编号2可能是最好的解决方案,因为它允许您在每次更改时仅发送已经进行的更改而不是整个数据库,但更多的工作.


Ada*_*lla 0

这可能就是您正在寻找的:Watch Connectivity Framework

更多信息: https ://developer.apple.com/library/prerelease/ios/documentation/WatchConnectivity/Reference/WatchConnectivity_framework/index.html

这里:https: //forums.developer.apple.com/thread/3927

引用自forums.developer.apple.com

使用共享组容器与其 iOS 应用程序共享数据的手表应用程序必须重新设计,以以不同的方式处理数据。在 watchOS 2 中,每个进程必须管理本地容器目录中自己的任何共享数据的副本。对于两个应用程序实际共享和更新的数据,这需要使用 Watch Connectivity 框架在它们之间移动该数据。