从一个类传递数据到WatchOS 2(连通性)

我希望在这里有人可能会有一些关于Watch OS 2连接的想法,可以指向正确的方向。 简单地说,我试图将一组数据(从一个名为FileData的自定义类)传递到我的WatchKit扩展。 当我运行WatchKit应用程序时,我可以看到WCSession正在被激活,但数据集似乎永远不会传递给Watch(尽pipe如果我将数据更改为一个string并传递一些简单的“你好”,它可以工作正确);

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传递一个自定义类,我错了吗? 还是我在这里做错了什么?

谢谢!

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