Alamofire получить ответ - PullRequest
1 голос
/ 02 марта 2020

Я получаю ноль в let restResponse = try? JSONDecoder().decode(SelectCourseResponse.self, from: data) по каким-либо причинам?

  func getMotherLangRequest() {
    showActivityIndicatory(uiView: view, show: true)

    AF.request(NetworkUrl.motherLang_getRequest,
               method: .get)
        .responseJSON { response in
            self.showActivityIndicatory(uiView: self.view, show: false)
            debugPrint(response)

            switch response.result {
            case .success:
                guard let data = response.data else { return }
                let restResponse = try? JSONDecoder().decode(SelectCourseResponse.self, from: data)                    
                if restResponse?.status == 0 {                    
                } else { self.showErrorResponse(data: data) }

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

здесь получите запрос enter image description here

Моя структура SelectCourseResponse

enter image description here

Ответы [ 2 ]

3 голосов
/ 02 марта 2020

Ваши поля price, icon и update_date имеют значение null, объявляют их необязательными, и ваш код будет работать.

2 голосов
/ 02 марта 2020

Я бы рекомендовал использовать блок do / catch и распечатать ошибку. Тем не менее, у вас есть несколько пустых полей в вашем JSON объекте, но вы не определили эти поля как необязательные в своих структурах данных. update_date, price и icon должны быть необязательными.

do {
    let restResponse = try JSONDecoder().decode(
        SelectCourseResponse.self,
        from: data
    )
    process(restReponse)
} catch {
    print("DECODE ERROR: \(error)")
}
...