[英]How to handle empty array response in iOS swift using alamofire
我正在使用 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) 。要求)”)
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 中處理該響應。
您可以嘗試將響應打印為字符串:
在您的請求末尾添加它,如下所示:
Alamofire.request(url, method: .get, encoding: JSONEncoding.default, headers: headers)
.responseJSON { response in
}.responseString { response in
print(response)
}
看看你的代碼,我會做這樣的事情:
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 格式的更多信息,最好寫下適合您的問題的更精確的代碼。
由於發送帶有空格的 URL,我從 alamofire 響應中得到一個空的 json,狀態碼為零,失敗。 如果你有類似的東西,請確保使用帶有允許字符的 url:
var urlString = originalString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.