Firebase可以将observeSingleEvent与.childAdded一起使用吗?

时间:2018-02-21 14:45:30

标签: ios firebase firebase-realtime-database

我正在写一个iOS应用程序。我希望逐个获得节点的每个孩子,并在我拥有所有现有孩子后停止听。请observeSingleEvent(of: .childAdded)做我想做的事吗?我知道我可以调用.value并遍历字典,只是想知道是否有更清洁的方式。

2 个答案:

答案 0 :(得分:2)

如果你这样做:

observeSingleEvent(of: .childAdded)

您最多只能获得一次.childAdded次活动。如果那就是你想要的,那么你确实可以用它。

请记住:

  • .childAdded仅在有子节点时触发,而.value在没有子节点时也会触发。
  • 如果没有孩子,则此.childAdded事件将在以后添加子项时触发,而.value将立即触发
  • 并显示空快照。

答案 1 :(得分:1)

否,observeSingleEvent(of: .childAdded)将在该节点上设置触发器,如果​​为该特定引用添加了任何子节点。您的代码委托将被调用。

您需要使用以下代码来获取该节点的所有子节点。

_commentsRef.observe(.value) { snapshot in
  for child in snapshot.children {
    ...
  }
}