2017-07-16 174 views
1

產生重複的輸出,我有以下的代碼來觀察新的評論了PIC和呈現整體所有圖片的新評論數:火力地堡.childAdded在Xcode

let ref4 = DatabaseReference.media.reference() 
     let query4 = ref4.child("\(value)/comments") 
     query4.observe(.childAdded, with: { snapshot in 
     let comment = Comment(dictionary: snapshot.value as! [String : Any]) 
      self.myNotif.insert(comment, at: 0) 

      self.newComment.text = ("\(self.myNotif.count)") 
      print("new comment noticed") 

的問題是,儘管只增加一個孩子到數據庫,控制檯正在複製結果。例如會有重複的打印語句。與此相關的主要問題是它也會增加2個而不是1個。有沒有人遇到過這個?

+0

請確保您的問題包含足夠信息來解決發生了什麼問題。至少我們需要查看JSON,您可以通過點擊[Firebase數據庫控制檯](https://console.firebase.google.com/project/_/database)中的「導出JSON」鏈接/數據)。但是在你的代碼中不會增加計數器,所以即使這樣也不完整。我現在可以說的最好的是'.childAdded'爲您觀察位置下的每個孩子開火。 –

+0

我建議閱讀[如何創建一個最小的,完整的可驗證的複製](http://stackoverflow.com/help/mcve)。這是迄今爲止在Stack Overflow獲得代碼幫助的最好方法。 –

+0

我完全同意@FrankvanPuffelen。我們需要查看您的結構以瞭解您正在使用的數據。此外,他在代碼中沒有計數器也是正確的,所以目前還不清楚它是如何遞增的。哦 - 你能否包含寫出節點的代碼?我們可以看一下,也許有一個問題。 – Jay

回答

0

我增加了一個延伸到我的評論類包括公平協議的一致性,然後改變了完成:

if !self.myNotif.contains(comment) { 
      self.myNotif.insert(comment, at: 0) 

      self.newComment.text = ("\(self.myNotif.count)") 
      print("new comment noticed") 
      } 

,它似乎解決差異

+0

這並不能真正解決實際問題 - 它更適用於它。如果原始問題(打印)中的代碼被調用兩次,則可能有重複的數據,這在某些時候會成爲問題。 – Jay