首页 文章

如何使用alamofire处理iOS swift中的空数组响应

提问于
浏览
0

我正在使用alamofire进行服务集成 . 它有时只给[]一个空的响应 . 在那个时候应用程序因为空数组响应而崩溃 . 如何在swift iOS中处理该响应 .

这是我的代码:

let headers = ["Authorization" : "Bearer "+token,
                   "Content-Type": "application/json"]

Alamofire.request(“http://sos.partnersbuddy.in/api/friend_request/received ", method: .get, encoding: JSONEncoding.default, headers: headers).responseJSON { response in // print(" Request(response.request)”)

print("RESPONSE \(String(describing: response.result.value))")
        print("RESPONSE \(response.result)")
        print("RESPONSE \(response)")

            var respVO:[RequestResvo] = Mapper<RequestResvo>().mapArray(JSONArray: response.result.value as! [[String : Any]])

            print(respVO)

            self.postID = respVO[0].id!

            if let result = response.result.value {
                let JSON = result as! NSArray
                print(JSON.value(forKey: "user"))

                let res = JSON.value(forKey: "user")
                let respVo = Mapper<SubRequestVo>().mapArray(JSONArray: res as! [[String : Any]])

                for (index, element) in (respVo.enumerated()) {
                    print(index)

                    self.nameArr.append(element.first_name!)
                    self.numberArr.append(element.mobile!)

                    print("nameArr\(self.nameArr)")                        
                    print("numberArr\(self.numberArr)")

                    DispatchQueue.main.async {
                        // update your UI and model objects here

                        self.mytableView.reloadData()
                        // SKActivityIndicator.dismiss()
                    }
                }
            }
    }

如何在该时间应用中处理此空响应由于空数组响应而崩溃 . 如何在swift iOS中处理该响应 .

2 回答

  • 0

    看看你的代码,我会做这样的事情:

    Alamofire.request("http://sos.partnersbuddy.in/api/friend_request/received", method: .get, encoding: JSONEncoding.default, headers: headers).responseJSON { response in
    
            switch response.result {
            case .success(let json):
                guard let array = json as? [[String : Any]] else {
                    // Handle error: your json response is not a [[String : Any]] as you were expecting
                }
    
                if array.count == 0 {
                    // Handle empty array response
                }
    
                var respVO:[RequestResvo] = Mapper<RequestResvo>().mapArray(JSONArray: response.result.value as! [[String : Any]])
    
                print(respVO)
    
                self.postID = respVO[0].id!
    
                if let result = response.result.value {
                    let JSON = result as! NSArray
                    print(JSON.value(forKey: "user"))
    
                    let res = JSON.value(forKey: "user")
                    let respVo = Mapper<SubRequestVo>().mapArray(JSONArray: res as! [[String : Any]])
    
                    for (index, element) in (respVo.enumerated()) {
                        print(index)
    
                        self.nameArr.append(element.first_name!)
                        self.numberArr.append(element.mobile!)
    
                        print("nameArr\(self.nameArr)")
                        print("numberArr\(self.numberArr)")
    
                        DispatchQueue.main.async {
                            // update your UI and model objects here
    
                            self.mytableView.reloadData()
                            // SKActivityIndicator.dismiss()
                        }
                    }
                }
            case .failure(let error):
                // Handle response error
                print(error)
            }
        }
    

    这使您可以处理响应结果和空数组的情况 . 提供有关您的响应json格式的更多信息,最好写下更适合您问题的更精确的代码 .

  • 1

    您可以尝试以字符串形式打印响应:

    在请求结束时添加它,如下所示:

    Alamofire.request(url, method: .get, encoding: JSONEncoding.default, headers: headers)
    .responseJSON { response in
    
    }.responseString { response in
        print(response)
    }
    

相关问题