我的目标是从iOS应用程序向watchKit应用程序发送一个巨大的字典(包含大约10个数组),但我没有在watchKit端获得任何输出。
如果我发送一个字符串,以下示例工作正常:
let message = [ "fromParent": "some string" ]
session.sendMessage(message, replyHandler: { replyDict in }, errorHandler: { error in })
但是当我尝试发送字典时,我根本没有得到任何输出:
let message = [ "fromParent": dictionary ]
session.sendMessage(message, replyHandler: { replyDict in }, errorHandler: { error in })
这就是我打印watchKit结尾输出的方式:
func session(session: WCSession, didReceiveMessage message: [String: AnyObject], replyHandler: [String: AnyObject] -> Void) {
guard let parentMessage = message["fromParent"] as? String else { return }
print(parentMessage)
}
答案 0 :(得分:2)
我无法通过sendMessage传输(> 100kb)大字典(只是相对较小的字典)
PayloadTooLarge
错误为already mentioned。
如果您实施了正确的错误处理程序,您将看到sendMessage
失败,因为您超出了可以在邮件中发送的数据量。
session.sendMessage(message, replyHandler: nil, errorHandler: { (error) -> Void in
print("sendMessage failed with error \(error)")
})
替代方法:
发送如此大量的数据并使用户长时间加载是不切实际的。
如果可能,您应该将任何预加载/静态数据捆绑在监视包中,这样就不需要在第一时间进行传输。
如果无法在手机和手表之间传输如此大量的数据,您需要使用transferFile:metadata:
(仅限剩余手表上的空间限制)。