将数据从类传递到WatchOS 2(连接性)

时间:2015-08-10 13:05:04

标签: ios connectivity watch-os-2

我希望有人可以对Watch OS 2连接有一些想法,这可以指向我正确的方向。简而言之,我试图将一组数据(从一个名为FileData的自定义类)传递给我的WatchKit扩展。当我运行WatchKit应用程序时,我可以看到WCSession正在被激活,但数据集似乎永远不会传递给Watch(尽管如果我将数据更改为String并传递简单的东西,如" hello&#34 ;它确实可以正常工作);

TableViewController.swift(iOS方面)

...
func sendToWatch(files: [FileData]) {
    let session = WCSession.defaultSession()
    let applicationData = ["myFiles":[FileData](files)]
    session.sendMessage(applicationData, replyHandler: { reply in
        print("Got reply: \(reply)")
    }, errorHandler: { error in
        print("error: \(error)")
    })
}
...

InterfaceController.swift(WatchKit扩展名)

...
func session(session: WCSession, didReceiveMessage message: [String : AnyObject]) {
    let files = message["myFiles"] as! [FileData]
    print("Got a message")
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            print(files)
        })

    reloadTable()
}
...

假设我可以通过Watch Connectivity传递自定义类,我错了吗?或者我在这里做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

是的,这是一个不正确的假设。 WCSession sendMessage文档声明字典可能只包含属性列表类型,这些类型是基本类型,如字符串,整数,浮点数,数据等。 因此,要发送内容,请将对象转换为键值对字典,或使用不太推荐的方法使用NSKeyedArchiver将对象直接转换为数据。