2017-11-03 16 views
0

私の問題の配列に重複したデータを追加しては、配列に重複したデータを追加:エラー

それは手動で更新することができますが、手動で

をリフレッシュすると、リストに追加重複前に私のプログラムは、それがうまく機能私はプリントをチェックし、データを二重リストに追加され

印刷結果

ARRAYLAR:[ "例"、 "実施例"]

ウォッチ問題 VİDEO

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.delegate = self 
    tableView.dataSource = self 

    getData() 
} 



@objc func getData() { 


     self.konuAdiArray.removeAll(keepingCapacity: false) 
     self.konuHedefTarihArray.removeAll(keepingCapacity: false) 
     self.konuTestArray.removeAll(keepingCapacity: false) 
     self.konuIDArray.removeAll(keepingCapacity: false) 
     self.veriGirisArray.removeAll(keepingCapacity: false) 




    Database.database().reference().child("users").child((Auth.auth().currentUser?.uid)!).child("dersler").child(gelenDersID!).child("konular").observe(DataEventType.childAdded) { (snapshot) in 
     let values = snapshot.value! as! NSDictionary 


      self.konuAdiArray.append(values["konuAdi"]as! String) 
      self.konuHedefTarihArray.append(values["konuHedefTarihi"]as! String) 
      self.konuTestArray.append(values["konuTestHedefi"]as! String) 
      self.veriGirisArray.append(values["veriGirisSoru"]as! String) 
      self.konuIDArray.append(snapshot.key) 

     print("ARRAYLAR : \(self.konuAdiArray)") 

     self.tableView.reloadData() 

    } 

} 

refreshBarButtonコード

@IBAction func refreshBarButton(_ sender: Any) { 
    getData() 
} 

答えて

0

をより良く理解するためのビデオは手動でリフレッシュのために理由はありません。 Firebaseデータベース上でchildAddedを観測していますが、リアルタイムで更新が続けられます。手動リフレッシュを実行するたびに、getData()はコントローラをオブザーバにもう一度として追加しています。手動リフレッシュコントロールを削除して、Firebaseにそれを実行させてください(手動リフレッシュなしのリアルタイム更新)。またはchildAddedの変更をワンタイムデータフェッチに変更してください。

+0

ワンタイムデータフェッチを行うにはどうすればいいですか –

+0

Firebaseのドキュメントの「データを一度読み取る」セクションを参照してください。https://firebase.google.com/docs/database/ios/read-and-write – Connor

0

データベースの変更を監視するには、別の機能を設定する必要があります。 getData()に電話をすると、DB変更の2回の呼び出しがコーディングされます。あなたがもう一度変更を購読するように、setDataBaseObserver()のような別の機能を作ることをお勧めします。これはviewDidLoadで1回だけ呼びます。データを更新している場合は、ネットワーク要求を行うか、別のソースから取得してください(データベースからではなく)。あなたが私を正しく理解することを願っています!

func setDataBaseObserver() { 
    Database.database().reference().child("users").child((Auth.auth().currentUser?.uid)!).child("dersler").child(gelenDersID!).child("konular").observe(DataEventType.childAdded) { (snapshot) in 
     let values = snapshot.value! as! NSDictionary 
     self.konuAdiArray.append(values["konuAdi"]as! String) 
     self.konuHedefTarihArray.append(values["konuHedefTarihi"]as! String) 
     self.konuTestArray.append(values["konuTestHedefi"]as! String) 
     self.veriGirisArray.append(values["veriGirisSoru"]as! String) 
     self.konuIDArray.append(snapshot.key) 
     print("ARRAYLAR : \(self.konuAdiArray)") 
     self.tableView.reloadData() 
    } 
} 

希望はあなたに役立ちます!

+0

しかし、仕事をしないでください:( –

+0

@ÖmerKaptanあなたはおそらく何か間違っています。あなたのコードを共有することができます - 私は役に立つことができる –

関連する問題