【问题标题】:Thrown expression type 'Error?' does not conform to 'Error' swift 3抛出表达式类型“错误?”不符合'错误' swift 3
【发布时间】:2017-11-23 07:13:47
【问题描述】:

将我的 Playground 代码更改为 Swift 3,Xcode 建议更改

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

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

但我收到此错误: "'Error' 不能转换为 'Error';你是不是要使用 'as!'强制低头?”

【问题讨论】:

  • 你的错误类型是如何定义的?

标签: swift xcode8


【解决方案1】:

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

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

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

更多信息请查看Official Documentation

【讨论】:

    猜你喜欢
    • 2017-01-08
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多