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

时间:2015-09-20 14:55:38

标签: ios swift core-data apple-watch

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

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

WCSession.defaultSession().transferFile(modelURL, metadata:nil)

但我收到错误:

  

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

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

2 个答案:

答案 0 :(得分:5)

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

要解决此问题,您可以选择以下几种方法:

  1. 将momd目录序列化为单个文件,然后在接收端进行反序列化(使用zip等方式)
  2. 创建传输格式,以便从数据库传输特定信息。
    • 项目会从数据库中提取一个特定的部分,并将其发送出去。接收方然后将该内容添加到其自己的数据库中。您可能会将transferUserInfo API与此解决方案一起使用。
  3. 解决方案编号2可能是最好的解决方案,因为它允许您在每次更改时仅发送已经进行的更改而不是整个数据库,但会更多工作。

答案 1 :(得分: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框架在它们之间移动数据。