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

如何使用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

我正在使用alamofire进行服务集成。它有时只是给出一个空洞的回答。在那个时候,由于空数组响应,应用程序正在崩溃。如何在swift iOS中处理该响应

这是我的密码:

    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)