Alamofire 得到回应

Posted

技术标签:

【中文标题】Alamofire 得到回应【英文标题】:Alamofire Get Response 【发布时间】: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,它会产生一个错误,你可以检查一下你的解析失败的原因。 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于Alamofire 得到回应的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 3 和 Alamofire 4 后没有得到响应

Alamofire.request().responseObject 不返回响应

如何使用参数 swift 3.0 Alamofire 4.0 调用邮政服务?

使用 alamofire 的 post 方法没有得到正确的响应,结果是失败 [关闭]

使用 Alamofire Swift3 发送复杂参数得到状态码 500 错误

Alamofire 快速接收并解析字符串数组