перезагрузка представления коллекции перед загрузкой из api - PullRequest
0 голосов
/ 29 мая 2020

У меня есть представление коллекции, которое перезагружается после получения данных из api. У меня есть условие, что когда счетчик массива больше нуля, он должен перезагрузить представление коллекции. Код приведен ниже:

if self.mainarray.count>0
                                {
                                    self.collectionview1.reloadData()
                                }

Если счетчик основного массива равен 2, то он перезагружает представление коллекции, когда счетчик сам по себе равен 1. Как заставить его перезагружаться только при получении полных данных?

func getcart() {

        print("getcart function",self.token)

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

                   AF.request("https:XXXX", method: .get, parameters: nil, encoding: JSONEncoding.default, headers: headers).responseJSON { response in

                      switch response.result {
                                 case .success(let json):
                             // print("Validation Successful",json)

                             if let res = json as? [[String: Any]]{

                                print("res count is",res.count)

                                self.skuarray.removeAll()

                                for item in 0..<res.count
                                {

                                    self.sku = res[item]["name"] as! String
                                    self.skuarray.append(self.sku!)
                                    let qty:Double = res[item]["qty"] as! Double

                                }

                                if self.skuarray.count > 0
                                {
                                    for i in 0..<self.skuarray.count
                                    {
                                        self.getimage(sku:self.skuarray[i])
                                    }
                                }

                              }
                        else
                             {
                                self.showAlert(message: "No products in the cart")
                             }

                        case let .failure(error):
                              print(error)
                          }

                  }

              }



    func getimage(sku: String)
    {

        AF.request("https:XXXXXX" + sku, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON { response in

                      //New
                      let decoder = JSONDecoder()

                      do {


                          let user = try decoder.decode(ProductDetailDataModel.self, from: response.data!)
                           self.detailmodel = user
                          // self.orgsearchDataModel = user
                        DispatchQueue.main.async
                            {
                                self.doLabelChange()
                                print("total images aree",self.mainarray)
                                if !self.mainarray.isEmpty
                                {
                                    self.tableview1.reloadData()
                                }
                            }



                      } catch {
                          print(error.localizedDescription)
                      }

                    }

    }


 func doLabelChange(){



            let sku = UserDefaults.standard.set((self.detailmodel?.sku)!, forKey: "sku")

            let array = self.detailmodel?.mediaGalleryEntries

            print("array is",array)


                let image = array![0].file
                print("image is ",image)

            let imageurl = "https://adamas-intl.com/pub/media/catalog/product/" + image

            print("imageurl is",imageurl)

            self.mainarray.append(imageurl)

        }
...