我希望有人可以对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传递自定义类,我错了吗?或者我在这里做错了什么?
谢谢!
答案 0 :(得分:1)
是的,这是一个不正确的假设。 WCSession sendMessage文档声明字典可能只包含属性列表类型,这些类型是基本类型,如字符串,整数,浮点数,数据等。 因此,要发送内容,请将对象转换为键值对字典,或使用不太推荐的方法使用NSKeyedArchiver将对象直接转换为数据。