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)")
}
}
}
}
我是 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)")
}
}
}
}