如何使用alamofire在iOS swift中处理空数组响应
我正在使用alamofire进行服务集成。它有时只是给出一个空洞的回答。在那个时候,由于空数组响应,应用程序正在崩溃。如何在swift iOS中处理该响应 这是我的密码:如何使用alamofire在iOS swift中处理空数组响应,ios,iphone,swift,Ios,Iphone,Swift,我正在使用alamofire进行服务集成。它有时只是给出一个空洞的回答。在那个时候,由于空数组响应,应用程序正在崩溃。如何在swift iOS中处理该响应 这是我的密码: let headers = ["Authorization" : "Bearer "+token, "Content-Type": "application/json"] 请求(“,方法:.get,编码:JSONEncoding.default,头:headers).respon
let headers = ["Authorization" : "Bearer "+token,
"Content-Type": "application/json"]
请求(“,方法:.get,编码:JSONEncoding.default,头:headers).responseJSON{response in
//打印(“请求(response.Request)”)
print(“RESPONSE\(字符串(描述:RESPONSE.result.value)))
打印(“响应\(RESPONSE.result)”)
打印(“响应\(响应)”)
var respVO:[RequestResvo]=Mapper().mapArray(JSONArray:response.result.value as![[String:Any]]
打印(respVO)
self.postID=respVO[0].id!
如果let result=response.result.value{
让JSON=结果为!NSArray
打印(JSON.value(forKey:“用户”))
让res=JSON.value(forKey:user)
让respVo=Mapper().mapArray(JSONArray:resas![[String:Any]]
对于(respVo.enumerated()中的(索引,元素){
打印(索引)
self.nameArr.append(element.first\u name!)
self.numberar.append(element.mobile!)
打印(“nameArr\(self.nameArr)”)
打印(“numberrarr\(self.numberrarr)”)
DispatchQueue.main.async{
//在此处更新您的UI和模型对象
self.mytableView.reloadData()
//SKActivityIndicator.Disclose()
}
}
}
}
由于空数组响应,当时应用程序正在崩溃,如何处理此空响应。如何在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)
}
}
Alamofire.request(“http://sos.partnersbuddy.in/api/friend_request/received,方法:.get,编码:JSONEncoding.default,头:headers.responseJSON{response in
开关响应。结果{
case.success(让json):
guard let array=json作为?[[String:Any]]其他{
//句柄错误:json响应不是预期的[[String:Any]]
}
如果array.count==0{
//处理空数组响应
}
var respVO:[RequestResvo]=Mapper().mapArray(JSONArray:response.result.value as![[String:Any]]
打印(respVO)
self.postID=respVO[0].id!
如果let result=response.result.value{
让JSON=结果为!NSArray
打印(JSON.value(forKey:“用户”))
让res=JSON.value(forKey:user)
让respVo=Mapper().mapArray(JSONArray:resas![[String:Any]]
对于(respVo.enumerated()中的(索引,元素){
打印(索引)
self.nameArr.append(element.first\u name!)
self.numberar.append(element.mobile!)
打印(“nameArr\(self.nameArr)”)
打印(“numberrarr\(self.numberrarr)”)
DispatchQueue.main.async{
//在此处更新您的UI和模型对象
self.mytableView.reloadData()
//SKActivityIndicator.Disclose()
}
}
}
案例。失败(let错误):
//句柄响应错误
打印(错误)
}
}
这使您可以处理响应结果和空数组情况。
提供更多关于您的响应json格式的信息,最好写下更精确的代码来解决您的问题。我从alamofire响应中得到一个空json,状态代码为零,由于发送URL时带有空格,因此失败。如果您得到了类似的内容,请确保使用带有允许字符的url:
var urlString = originalString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
var urlString = originalString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)