【问题标题】:How to use coredata from iPhone on AppleWatch OS2?如何在 AppleWatch OS2 上使用 iPhone 的 coredata?
【发布时间】:2015-09-20 14:55:37
【问题描述】:

我尝试通过fileTransfer方法发送:

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

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

但我得到错误:

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

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

【问题讨论】:

标签: ios swift core-data apple-watch


【解决方案1】:

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

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

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

解决方案 2 可能是最好的解决方案,因为它允许您在每次进行更改时只发送已进行的更改而不是整个数据库,但工作量会更大。

【讨论】:

    【解决方案2】:

    这可能就是你要找的东西: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 框架在它们之间移动数据。

    【讨论】:

    • 就像您在我的代码中看到的那样,我使用 Watch Connectivity Framework。我的问题是如何使用这个框架将核心数据传递给 AppleWatch
    • 只是为了验证,您是从手机端还是手表端执行?
    • 我想将文件从手机传输到手表
    猜你喜欢
    • 2010-12-11
    • 2010-11-22
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    相关资源
    最近更新 更多