Swift,Firebase从未知的孩子中检索数据

时间:2017-11-02 19:30:42

标签: ios swift firebase firebase-realtime-database

我想从Firebase数据库 child 中检索数据。但我不知道子节点名称。

我的数据库如下所示:

  • 用户
    • 用户名
      • 2017(我不知道这个字符串。它是2017年,2018年......还是其他什么?)
        • 十一月(我不知道这个字符串。它是十一月,一月......还是其他什么?)
          • 关键:价值(我需要这些数据)
          • 关键:价值(我需要这些数据)
          • 关键:价值(我需要这些数据)

我试过了:

override func viewDidLoad() {
    super.viewDidLoad()

    let userID = Firebase.Auth.auth().currentUser?.uid

    databaseRef = Database.database().reference().child("Users").child(userID!)
    databaseRef.observe(.value, with: { (snapshot) in

        var newItems = [Post]()

        for item in snapshot.children {
            let newPost = Post(snapshot: item as! DataSnapshot)
            newItems.append(newPost)
        }

        self.postArray = newItems
        self.tableView.reloadData()
        print(newItems)

    }) { (error) in
        print(error.localizedDescription)
    }
}

1 个答案:

答案 0 :(得分:1)

在您当前的代码中,您已经循环多年。如果您还想循环使用几个月,则需要额外添加for

databaseRef = Database.database().reference().child("Users").child(userID!)
databaseRef.observe(.value, with: {(snapshot) in

    for year in snapshot.children.allObjects as [DataSnapshot] {
        for month in year.children.allObjects as [DataSnapshot] {
            print(month.key)
        }
    }


}){
    (error) in
    print(error.localizedDescription)
}

这将打印月份。您可以通过以下方式获取特定月份的属性:

print(month.childSnapshot(forPath:"Key").value)