2017-11-03 1 views
0

내 문제를 배열에 중복 데이터를 추가배열에 중복 된 데이터를 추가 : 오류

가 수동으로 새로 고칠 수 있지만 수동으로

를 새로 고칠 때 목록에 추가 중복 전에 내 프로그램은 잘 작동 I는 인쇄 검사 데이터는 이중 목록에 추가

인쇄 결과

ARRAYLAR : [ "실시 예", "실시 예"]

,617,

시계 문제 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 변경 사항에 대해 두 번 코드를 호출합니다. 그래서 당신이 한 번 더 변경을 구독하면 setDataBaseObserver()과 같은 별도의 기능을 사용하는 것이 좋습니다.이 경우 한 번만 viewDidLoad으로 전화하십시오. 데이터를 업데이트하는 경우 네트워크 요청을하거나 데이터베이스가 아닌 다른 소스에서 데이터를 가져와야합니다. 당신이 나를 올바르게 이해하기를 바랍니다!

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 아마도 당신이 뭔가 잘못하고 있습니다. 만약 당신이 코드를 공유 할 수 있습니다 - 내가 유용 할 수 있습니다 –

관련 문제