Ios FIRDatabaseHandle值或childChanged

Ios FIRDatabaseHandle值或childChanged,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我正在寻找一种方法来读取数据形式的孩子,也有它的生活更新 我见过一些代码示例,其中人们首先使用以下方法获取数据: ref?.child("posts").child("somechild").observe(.value 然后使用另一个功能查看更改: ref?.child("posts").child("somechild").observe(.childChanged 但是FIRDatabaseHandle中的.value和.childChanged之间有什么区别呢 现在我只使用.valu

我正在寻找一种方法来读取数据形式的孩子,也有它的生活更新

我见过一些代码示例,其中人们首先使用以下方法获取数据:

ref?.child("posts").child("somechild").observe(.value
然后使用另一个功能查看更改:

ref?.child("posts").child("somechild").observe(.childChanged
但是
FIRDatabaseHandle
中的
.value
.childChanged
之间有什么区别呢

现在我只使用
.value
,我将首先获取数据,然后使用它观察更改,因此我不需要
.childChanged
,这让我想知道
.childChanged
用于什么


谢谢。

倾听价值事件

要读取路径上的数据并侦听更改,请使用FIRDatabaseReference的observeEventType:withBlock或observeSingleEventOfType:withBlock方法来观察FIRDataEventTypeValue事件

事件类型典型用法 FIRDataEventTypeValue读取并侦听对路径整个内容的更改。
您可以使用FIRDataEventTypeValue事件读取给定路径上的数据,因为它在事件发生时就存在。此方法在附加侦听器时触发一次,在每次数据(包括任何子项)更改时触发一次。事件回调传递一个快照,其中包含该位置的所有数据,包括子数据。如果没有数据,则返回的快照值为零。

因此,我应该可以只使用
ref?.child(“posts”).child(“somechild”)。观察(.childChanged
读取数据并检查更改?另外,由于我的目标是子节点的特定子节点,我想我不会在每次更改时读取整个节点的数据?是的,这是正确的。查看控制台,确保它不建议为读取数据实现和索引值。这样会加快速度向上读取,要么不到根节点,要么显式定义根节点。