2017-07-16 159 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