【问题标题】:Alamofire Get ResponseAlamofire 得到回应
【发布时间】:2020-03-02 04:45:32
【问题描述】:

我在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)
            }
    }
}

在这里获取请求

我的 SelectCourseResponse 结构

【问题讨论】:

  • 可以加SelectCourseResponsestruct吗?
  • 你应该使用responseDecodable,它会产生一个错误,你可以检查一下你的解析失败的原因。

标签: json swift get alamofire


【解决方案1】:

您的价格、图标和更新日期字段为空,将它们声明为可选,您的代码将正常工作。

【讨论】:

    【解决方案2】:

    我建议使用 do/catch 块并打印出错误。也就是说,您的 JSON 对象中有许多空字段,但您没有在数据结构中将这些字段定义为可选字段。 update_datepriceicon 都应该是可选的。

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

    【讨论】:

      猜你喜欢
      • 2020-02-18
      • 1970-01-01
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多