使用Swift从Firebase查询中打印嵌套值

时间:2018-11-26 00:13:19

标签: swift firebase firebase-realtime-database

我目前有一个像这样的firebase数据库:

Playlist
    Playlist1
        0:  "song1"
        1:  "song2"
    Playlist2
        0:  "song1"
        1:  "song2"

我想做的是将每个播放列表名称的名称打印到TableViewController上。我了解TableView的工作原理,但是我挂了的是如何调用数据库。我目前已将

硬编码为
let ref = Database.database().reference().child("Playlists/Playlist1")
 ref.observe(.value, with: {
            snapshot in
            print(snapshot.key)

这显然是不可扩展的,无论如何,我是否可以迭代所有数据并获得播放列表名称?

1 个答案:

答案 0 :(得分:1)

如果这是您的结构:

enter image description here

  Database.database().reference().child("Playlists").observe(.value, with: { (_snapshot) in
        if let playLists = _snapshot.value as? [String : Any] {

            var names = [String]()

            for playlist in playLists {
                names.append(playlist.key)
            }

            // return names in a completion
        }
    }, withCancel: nil)

输出:

enter image description here

我还建议不要将播放列表的名称用作键,而应使用诸如childByAutoID之类的ID,它是内置的firebase方法。然后,将名称作为属性。