我需要帮助从firebase获取快照中的值

时间:2018-05-01 01:59:32

标签: swift firebase firebase-realtime-database

Firebase中的我的数据如下所示:

schema

我正在使用

检索数据
 var ref: DatabaseReference
    ref = Database.database().reference()

    ref.child("peopleReminders").child("-LBO0TMbOM0cwd5TMMiP").observe(.value) { snapshot in
         for  value in snapshot.children {
            print(value)

        }

    }

这将打印以下内容:

Snap (0) r04
Snap (1) r02
Snap (2) r01

这应该是一个数组。我需要做的是从中获取值R04R02R01

2 个答案:

答案 0 :(得分:1)

我使用以下代码替换了snapshot.children中的值。

let enumerator = snapshot.children
while let rest = enumerator.nextObject() as? DataSnapshot {
    print(rest.value!)
}

新输出现在是: R04 R02 R01

答案 1 :(得分:1)

您不需要loopenumeration将其解析为数组,因为Firebase支持ArrayDictionary。您可以直接将结果转换为数组。下面的代码将起作用:

ref.child("peopleReminders").child("-LBO0TMbOM0cwd5TMMiP").observeSingleEvent(of: DataEventType.value) { (snapshot) in
     if snapshot.exists() {
         let result: [String] = snapshot.value as? [String] ?? []
         print(result)
     }
}
  

注意:如果请求的引用不存在数据,请始终检查snapshot是否存在。如果您使用observeSingleEvent需要一次获取数据,请使用observe每当请求的节点发生更改时,回调将被多次调用,以便删除插入更新