Swift 抛出表达式类型';错误?';不符合';错误';斯威夫特3

Swift 抛出表达式类型';错误?';不符合';错误';斯威夫特3,swift,xcode8,Swift,Xcode8,将我的游乐场代码更改为Swift 3,Xcode建议更改 if let requestError = error { completion({throw (Error(code: requestError._code, description: requestError.localizedDescription, innerError: nil, informations:nil))}) } 到 但我得到了这个错误: “'Error'不能转换为'Error';您的意思是使用'as!'强

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

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

但我得到了这个错误:
“'Error'不能转换为'Error';您的意思是使用'as!'强制向下广播吗?”

Swift 3中的错误处理不同。错误现在是您遵守的协议,所以您定义了错误案例,然后抛出

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

guard let httpUrlResponse = response as? HTTPURLResponse else {
   throw NetworkError.invalidResponse
}

有关更多信息,请参见

如何定义错误类型?
enum NetworkError: Error {
    case unauthorised
    case timeout
    case serverError
    case invalidResponse
}

guard let httpUrlResponse = response as? HTTPURLResponse else {
   throw NetworkError.invalidResponse
}