抛出表达式类型“错误?” 不符合“错误”swift 3

Aru*_*evi 2 swift xcode8

将我的游乐场代码更改为 Swift 3,Xcode 建议更改

if let requestError = error {
    completion({throw (Error(code: requestError._code, description: requestError.localizedDescription, innerError: nil, informations:nil))})
}
Run Code Online (Sandbox Code Playgroud)

if let requestError = error {
    completion({throw (Error(code: requestError._code, description: requestError.localizedDescription, innerError: nil, informations:nil)) as! Error})
}
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:“'Error' 不能转换为 'Error';您的意思是使用 'as!' 强迫垂头丧气?”

Scr*_*ble 5

Swift 3 中的错误处理是不同的。错误现在是您遵守的协议,因此您可以定义错误情况然后抛出。

enum NetworkError: Error {
    case unauthorised
    case timeout
    case serverError
    case invalidResponse
}

guard let httpUrlResponse = response as? HTTPURLResponse else {
   throw NetworkError.invalidResponse
}
Run Code Online (Sandbox Code Playgroud)

更多信息请查看官方文档