Swift编译器错误,表达式类型'错误'没有更多背景

时间:2016-11-08 05:23:07

标签: swift

typealias SwiftAMapCompletion = (CLLocation?,AMapLocationReGeocode?,Error) -> Void
var locationResult : SwiftAMapCompletion?

我想给出一个nil作为Error,但是" Swift Compiler Error"是

  

表情类型'错误'没有更多的上下文是模棱两可的。(SwiftAMapCompletion不能改变)

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

1 个答案:

答案 0 :(得分:0)

即使您使用as!,也不能强迫nil成为错误。

您的选择是:

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

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

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