Не удается получить доступ к телу запроса Alamofire - PullRequest
1 голос
/ 04 июля 2019

При запросе с сервера у меня проблема внезапно Alamofire.request не может получить доступ к responseJSON и не может получить доступ к телу функции, и он возвращает, что мне делать? Я использую несколько запросов Alamofire в NavigationController, но после двух или трех запросов это происходит! Я действительно в беде, пожалуйста, помогите мне!

этот код не может быть выполнен

    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 голосов
/ 04 июля 2019

Если это не удастся, вы должны погрузиться и посмотреть на ошибку, которая была возвращена. Вы можете даже захотеть взглянуть на тело ответа (если это сервер разработки, он может предоставить некоторые полезные сообщения об ошибках в теле ответа).

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, потому что вы хотите убедиться, что ваша группа рассылки удовлетворена независимо от того, была она успешной или нет.

Но, суть в том, что вы не сможете диагностировать проблему, пока не начнете точно смотреть, какая ошибка была возвращена.

...