2017-10-07 7 views
0

Ici j'avais implémenté la pagination pour la vue de table et les éléments sont chargés en utilisant la classe de modèle mais ici les éléments chargés remplacent avec les nouveaux éléments et quand il appelle api il retourne les nouvelles données et les anciennes données 10 articles à la fois Je l'implémente pour la première fois quelqu'un peut-il m'aider à résoudre le problème?Comment afficher toutes les données dans la vue de table pendant la pagination dans swift 3?

func listCategoryDownloadJsonWithURL(listUrl: String) { 
     let url = URL(string: listUrl)! 
     print(listUrl) 
     let task = URLSession.shared.dataTask(with: url) { (data, response, error) in 
      if error != nil { print(error!); return } 
      do { 
       if let jsonObj = try JSONSerialization.jsonObject(with: data!) as? [String:Any] { 
        self.listClassModel = ModelClass(dict: jsonObj as [String : AnyObject]) 
        DispatchQueue.main.async { 
         guard let obj = self.listClassModel else { return } 
         let itemsCount = obj.items.count 
         print(itemsCount) 
         for i in 0..<itemsCount { 
          let customAttribute = obj.items[i].customAttribute 
          for j in 0..<customAttribute.count { 
           if customAttribute[j].attributeCode == "image" { 
            let baseUrl = "http://192.168.1.11/magento2/pub/media/catalog/product" 
            self.listCategoryImageArray.append(baseUrl + customAttribute[j].value) 
            print(self.listCategoryImageArray) 
           } 
          } 
         } 
         self.activityIndicator.stopAnimating() 
         self.activityIndicator.hidesWhenStopped = true 
         self.collectionView.delegate = self 
         self.collectionView.dataSource = self 
         self.collectionView.reloadData() 
         self.collectionView.isHidden = false 
         self.tableView.reloadData() 
        } 
       } 
      } catch { 
       print(error) 
      } 
     } 
     task.resume() 
    } 

Répondre

0

Vous affectez vos données de résultats au groupe de modèles, chaque fois que vous appelez votre API. C'est la raison pour laquelle vos anciennes données sont remplacées par une nouvelle. Plutôt que d'affecter, vous devez ajouter les nouvelles données à votre tableau de sources de données.

if let jsonObj = try JSONSerialization.jsonObject(with: data!) as? [String:Any] { 
     self.listClassModel.append(contentsOf: ModelClass(dict: jsonObj as [String : AnyObject])) 

Assurez-vous également d'initialiser votre tableau en tant que tableau vide en premier. (peut-être dans declaration ou viewDidLoad) avant d'appeler l'API.

+0

J'ai déclaré un tableau vide comme montré ici, mais il réaccorde une erreur dans la ligne de changement mentionnée self.listClassModel.append (contentsOf: ModelClass (dict: jsonObj comme [String: AnyObject])) et l'erreur est la valeur de type [string: anyobject] n'a aucun membre append var listClassModel: [Chaîne: AnyObject] = [:] –

+0

var listClassModel = [ModelClass]() Voici comment un tableau est instancié. Vous définissez un dictionnaire dans le code ci-dessus. – Aks

+0

oui bro comme mentionné –