使用 Alamofire 从 api 获得响应时的问题

Posted

技术标签:

【中文标题】使用 Alamofire 从 api 获得响应时的问题【英文标题】:Issues While getting response from api using Alamofire 【发布时间】:2018-12-22 13:07:47 【问题描述】:

我正在我的应用程序中集成详细 api,但我无法理解如何从数组中获取数据,我将我的回复放在这里以便更好地理解

 
"success": "1",
"data": 
    "service_list": [
        
      "service_id": "11",
      "fk_user_id": "77",
      "fk_bus_id": "0",
      "fk_sub_cate_id": "1",
      "service_name": "Business Cards",
       "service_desc": "Business Cards",
       "service_price": "500",
       "service_img1": "https://www.kwikmypay.com/mode_share/modeshare_admin/assets/images/business/ser_pquat1531379189.png",
       "service_img2": "https://www.kwikmypay.com/mode_share/modeshare_admin/assets/images/business/ser_hjzty1531379189.png",
       "service_img3": "https://www.kwikmypay.com/mode_share/modeshare_admin/assets/images/business/ser_rmgxb1531379189.png",
       "service_img4": "https://www.kwikmypay.com/mode_share/modeshare_admin/assets/images/business/ser_kptyq1531379189.png",
       "service_img5": "https://www.kwikmypay.com/mode_share/modeshare_admin/assets/images/business/ser_xwmlq1531379189.png"
        
    ]
,
"message": ""

这是我的回应,我希望 服务列表 数组在表格视图中打印,任何人都可以帮助我

这是我的答案

   let busdetail = ["user_id":u_id,"access_token":acc_tkn,"bus_id":busid] as [String:Any]
        print(busdetail)
        Alamofire.request(businessDetail, method: .post, parameters: busdetail).responseJSON
            
                response in

                print(response)
                let result = response.result

                if let dict = result.value as? Dictionary<String,AnyObject>
                    if let serlist = dict["data"]
                        if let s_list = serlist["service_list"]

                        self.servicelist = s_list as! [AnyObject]
                        self.tbl_expand.reloadData()
                        //self.tbl_servicelist.reloadData()
                        //self.dropDown.items = categorylist as! [AnyObject] as! [String]
                        
                    
                
                self.hideLoader()
                //self.activityIndicator.stopAnimating()
        

【问题讨论】:

你遇到什么问题显示你的代码 我是 ios 新手,所以我无法理解如何从数据中获取响应:serviewlist[] 你的服务列表是一个字典数组 它是一本字典 我只想知道如何从这里的服务列表数组中获取响应 【参考方案1】:
func demoApi() 
Alamofire.request("yourapi", method: .post, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON  (response:DataResponse<Any>) in

    switch(response.result) 
    case .success(_):
        if let json= response.result.value as? [String:Any]    
        if let response = json["data"] as? [String:Any],
        let ServiceList= response["service_list"] as? [[String:Any]] 

     for servicelist in ServiceList 
        let service_id= servicelist ["service_id"] as! String
        let service_name= servicelist ["service_name"] as! String
        let service_img1= servicelist ["service_img1"] as! String

    
  


            DispatchQueue.main.async 
                self.yourTableView.reloadData()
            
        
        break

    case .failure(_):
        print("Error")
        break

    


 

【讨论】:

是的,我正在寻找这个谢谢 你得到了你想要的 是的,我得到了它,我得到了我正在寻找的东西 快乐编码 :) 是的,谢谢您的帮助

以上是关于使用 Alamofire 从 api 获得响应时的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 RxSwift 和 alamofire 获得嵌套 api 调用的响应?

Alamofire 从 POST 获得响应

使用 Alamofire 从 API 获取响应

使用 Alamofire 响应填充表视图

iOS Swift 2 - 失败时的 Alamofire 打印响应值

我应该如何使用 Alamofire 和 SwiftyJSON 解析来自 API 的 JSON 响应?