2017-10-07 6 views
0

ここでは、テーブルビューの項目を実装していましたが、モデルクラスを使用して項目を読み込みましたが、ここではロードされた項目が新しい項目に置き換えられ、apiを呼び出すたびに新しいデータが返され、古いデータは上書きされ、一度に10個のアイテムを初めて実装しています誰でも問題の解決方法を教えてください。ページビューですべてのデータを表示するには?

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() 
    } 

答えて

0

APIを呼び出すたびに結果データをモデル配列に割り当てます。これは、古いデータが新しいデータに置き換えられる理由です。代入するのではなく、新しいデータをデータソース配列に追加する必要があります。

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

また、配列を最初に空の配列として初期化してください。 (おそらく宣言またはviewDidLoadで)APIを呼び出す前に。

+0

ここでは空の配列を宣言しましたが、前述の変更行self.listClassModel.append(contentsOf:ModelClass(dict:jsonObj as [String:AnyObject]))でエラーを再現しました。エラーはtypeの値です[string:anyobject]にメンバの追加がありませんvar listClassModel:[String:AnyObject] = [:] –

+0

var listClassModel = [ModelClass]()これは配列のインスタンス化方法です。あなたは上記のコードで辞書を定義しています。 – Aks

+0

はい仲間が –

関連する問題