无法访问Alamofire请求正文

时间:2019-07-03 21:52:29

标签: swift4 ios12

我从服务器请求时遇到问题,一切都很好 突然,Alamofire.request无法访问responseJSON并且无法访问该函数的主体,并且它返回,我该怎么办? 我在navigationController中使用了多个Alamofire请求,但是在发生两三个请求之后,就会发生这种情况! 我真的很麻烦,请帮助我!

此代码无法执行

    let group = DispatchGroup()
    group.enter()
    Alamofire.request(url, method: .get, parameters: nil, 
      encoding: 
        JSONEncoding.default, headers: header as? HTTPHeaders)
        .responseJSON { (response) in
            if response.result.isSuccess{
                if let response = response.result.value {

                    let json = JSON(response)
                    self.updateAnswers(json: json)
                    print(json.arrayValue)
                    group.leave()
                }
            }
    }

1 个答案:

答案 0 :(得分:0)

如果操作失败,则应该深入研究一下返回的错误。您甚至可能希望查看响应的主体(如果它是开发服务器,它可能会在响应的主体中提供一些有用的错误消息)。

let group = DispatchGroup()
group.enter()
Alamofire.request(...)
    .responseJSON { response in
        defer { group.leave() }

        switch response.result {
        case .failure(let error):
            print(error)
            print(response.response ?? "no HTTPURLResponse")
            if let data = response.data {
                if let string = String(data: data, encoding: .utf8) {
                    print(string)
                } else {
                    print(data as NSData)
                }
            } else {
                print("no data")
            }

        case .success(let json):
            print(json)
        }
}

顺便说一句,我建议将leave调用移至任何if / switch语句之外,因为您想确保调度组是否满意,无论它是否成功与否。

但是,最重要的是,只有开始仔细地查看返回了什么错误,您才能诊断出问题。