【问题标题】:How to read values of a child from Firebase Realtime DB?如何从 Firebase Realtime DB 读取孩子的值?
【发布时间】:2022-01-03 07:22:02
【问题描述】:

我正在尝试从我的数据库中获取值。但是,我没有成功。这是数据库的样子:

这是我尝试做的,读取值:

    taskRef = Database.database().reference(withPath: "Tasks").child(titleOfTask)

    taskRef?.observeSingleEvent(of: .childAdded, with: { (snapshot) in
         if let taskDict = snapshot.value as? [String:Any] {
            print("Printing ---------> ",taskDict["Description"] as Any)
         }
    })

但什么也没发生。理想情况下,我想将不同变量中的描述和到期日期都读入不同的变量中。


需要了解的重要事项:

  • "Tasks"是..你可以把它想象成一个表名。
  • Alpha、Bravo、Jalabi...等都是"Task Names" 或"Tasks" 的子代
  • 描述、到期日是值

【问题讨论】:

    标签: swift firebase-realtime-database


    【解决方案1】:

    您在 JSON 中将侦听器附加到 /Tasks/$titleOfTask,例如 /Tasks/Alpha。该侦听器要求为/Tasks/Alpha 的第一个child 节点调用,因此代码中的snapshot 将指向/Tasks/Alpha/Description。当您随后打印taskDict["Description"] 时,您正在打印不存在的/Tasks/Alpha/Description/Description 的值。

    最简单的解决方法是监听.value 事件:

    taskRef?.observeSingleEvent(of: .value, with: { (snapshot) in
         if let taskDict = snapshot.value as? [String:Any] {
            print("Printing ---------> ",taskDict["Description"] as Any)
         }
    })
    

    现在snapshot 拥有来自/Tasks/Alpha 的所有数据,因此taskDict["Description"] 最终成为来自/Tasks/Alpha/Description 的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-25
      • 2021-11-29
      • 1970-01-01
      • 2016-12-04
      • 2021-04-22
      • 1970-01-01
      相关资源
      最近更新 更多