【问题标题】:Swift Compiler Error,Expression type 'Error' is ambiguous without more contextSwift 编译器错误,表达式类型“错误”在没有更多上下文的情况下模棱两可
【发布时间】:2016-11-08 05:23:07
【问题描述】:
typealias SwiftAMapCompletion = (CLLocation?,AMapLocationReGeocode?,Error) -> Void
var locationResult : SwiftAMapCompletion?

我想给一个 nil 作为错误,但“Swift 编译器错误”是

表达式类型“错误”在没有更多上下文的情况下不明确。(SwiftAMapCompletion 无法更改)

locationResult!(location, reGeocode, nil as! Error)

【问题讨论】:

  • typealias SwiftAMapCompletion = (CLLocation?,AMapLocationReGeocode?,Error) -> Void
  • var locationResult : SwiftAMapCompletion?
  • locationResult!(location, reGeocode, nil as!Error)

标签: swift


【解决方案1】:

您不能强制 nil 成为错误,即使您使用 as!

您的选择是:

  1. 将声明更改为Error?,因为这意味着您可以传递nil。
  2. 传递错误。

例如:

enum MyError: Error {
    case ok
}
locationResult!(location, reGeocode, MyError.ok)

在我看来,您的SwiftAMapCompletion 接口没有任何意义,因为通常这样的回调将是“这是结果,或者这是错误”,因此所有参数都应声明为可选(@987654325 @)。如果可以的话,我会改变这个界面。

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多