Как обработать ответ пустого массива в iOS swift с помощью alamofire - PullRequest
0 голосов
/ 05 сентября 2018

Я использую alamofire для интеграции услуг. он дает пустой ответ как [] иногда только. в это время приложение падает из-за пустого ответа массива. Как обработать этот ответ в быстрой iOS.

Вот мой код:

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

Alamofire.request ("http://sos.partnersbuddy.in/api/friend_request/received", метод: .get, кодировка: JSONEncoding.default, заголовки: заголовки) .responseJSON {ответ в // print ("Запрос (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()
                    }
                }
            }
    }

Как обрабатывать этот пустой ответ в то время, когда приложение падает из-за пустого ответа массива. Как обработать этот ответ в быстрой iOS.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Глядя на ваш код, я бы сделал что-то вроде этого:

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, было бы лучше написать более точный код, который соответствует вашей проблеме.

0 голосов
/ 05 сентября 2018

Вы можете попробовать распечатать ответ в виде строки:

Добавьте его в конце вашего запроса, например:

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

}.responseString { response in
    print(response)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...