【问题标题】:Expression type 'DataRequest' is ambiguous without more context Swift 3表达式类型“DataRequest”在没有更多上下文 Swift 3 的情况下是模棱两可的
【发布时间】:2017-09-09 05:26:58
【问题描述】:

我是新手,我有一个错误,我不知道如何解决,所以我很感激所有的帮助。我正在从 swift 2 迁移到 swift 3,但出现此错误:

表达式类型“DataRequest”在没有更多上下文的情况下是模棱两可的

这是我的代码:

 static func renewToken(_ onSuccess: @escaping (JSON) -> Void, onFailure: @escaping (NSError) -> Void) {

    let token = DataManager.token?.token
    let header = ["Authorization": "Bearer "+token!]

    Alamofire.request("\(BASE_URL)\(RENEWTOKEN_PATH)", method: .get, parameters: nil, encoding: .JSONEncoding.default, headers: header)
        .validate()
        .responseJSON { response in
            switch response.result{
            case .Success(let jsonObj):
                onSuccess(JSON(jsonObj))


            case .Failure(let error):
                onFailure(error)
            }
    }
}

【问题讨论】:

  • 您的问题在没有更多上下文的情况下模棱两可。请出示DataRequest的声明。

标签: swift3 alamofire


【解决方案1】:

您的错误具有误导性,您需要对代码进行 3 处更改。

  1. 编码不是.JSONEncoding.default,而只是JSONEncoding.default
  2. Alamofire 4.*Swift 3.* 的情况下,.Success.Failure 的结果 enum 现在以小写形式写入,例如 .success.failure
  3. 从 Swift 3 开始使用 Error 而不是 NSError

所以整个代码是这样的。

static func renewToken(_ onSuccess: @escaping (JSON) -> Void, onFailure: @escaping (Error) -> Void) {

    let token = ""
    let header = ["Authorization": "Bearer "+token]

    Alamofire.request("", method: .get, parameters: nil, encoding: JSONEncoding.default, headers: header)
        .validate()
        .responseJSON { response in
            switch response.result{
            case .success(let jsonObj):
                onSuccess(JSON(jsonObj))


            case .failure(let error):
                onFailure(error)
            }
    }
}

【讨论】:

  • 非常感谢!这 。是问题!祝你有美好的一天!
猜你喜欢
  • 2017-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
  • 2021-08-05
  • 1970-01-01
相关资源
最近更新 更多