Swift 3 - 抛出函数类型“(Any) -> Void”的无效转换

Swift 3 - Invalid conversion from throwing function type '(Any) -> Void'

我是 swift 的新手并且 我不明白为什么会出现此错误。

我一直在阅读类似的问题,到目前为止 none 解决了这个错误,或者我还没有找到:

Invalid conversion from throwing function of type '(_) throws -> ()' to non-throwing function type '(Any) -> ()'

行:

self.ws.event.message = { message in

错误的代码:

public var ws = WebSocket()

public func websocket(token: Any){
        self.ws.open("ws://"+String(APIHOST)+":"+String(port)+"/ws?token="+String(describing: token))

        self.ws.event.message = { message in
            if let text = message as? String {
                let json = try JSONSerialization.jsonObject(with: text, options: []) as? [String: Any]

                print("recv: \(text)")
            }
        }
}

感谢您的帮助

如果您有一个抛出某些东西的函数,这通常意味着在您的情况下访问该数据时可能会出错 JSON。

如果函数抛出异常,您需要执行 {} catch {} 以告知 Swift 您将要处理错误。

试试下面的代码

public var ws = WebSocket()

public func websocket(token: Any){
    self.ws.open("ws://"+String(APIHOST)+":"+String(port)+"/ws?token="+String(describing: token))

    self.ws.event.message = { message in
        if let dataObj = message as? Data {
            do {
                let json = try JSONSerialization.jsonObject(with:dataObj, options: []) as? [String: Any]
                print("recv: \(text)")
            } catch error {
                print("Unable to load data: \(error)")
            }
        }
    }
}