【问题标题】:Retrieve firebase data检索 Firebase 数据
【发布时间】:2016-07-30 08:11:20
【问题描述】:

这是 firebase 数据树

有两个父母,每个人都有两个孩子。如何检索“性”的所有数据。

这是我的代码。

ref.child("Doctor").observeSingleEventOfType(.Value, withBlock: { (snapshot) in
            if let result = snapshot.children.allObjects as? [FIRDataSnapshot] {
                for child in result {

                    print("Here 1")
                    print(child)
                    let gender = child.value!["sex"] as? String
                    print("Here 2")
                    //print("Sex")
                    print(gender)
                }

            } else {
                print("no results")
            }
        }) { (error) in
            print(error.localizedDescription)
        }

当我打印性别的值时,它显示的是 nil 值。

【问题讨论】:

  • 能否请您添加您从print(child) 获得的内容?
  • 我的值为零。
  • 我很难理解您为什么要在此处获取您的孩子的快照nil。我在您的代码中看到的问题是您仅在父节点中进行迭代。您将需要再深入一层以获取具有性别信息的子节点。但请记住,您的数据结构根本不可靠和干净,我强烈建议您花一些时间重构它。我不知道为什么你有这个带有键的 2 级深子,但你应该将它们分隔在数据库的两个不同分支中。
  • 在下面回答。对于下一个问题,请将 JSON 包含为文本而不是图片,您可以通过单击 Firebase 数据库控制台中的导出按钮轻松获取。将 JSON 作为文本使其可搜索,让我们可以轻松地使用它来测试您的实际数据并在我们的答案中使用它,一般来说这只是一件好事。

标签: ios swift firebase swift2 firebase-realtime-database


【解决方案1】:

您正试图跳过代码中的一个级别。您侦听根节点的值,然后遍历其子节点。这将为您提供节点 Msm...eqn... 的快照。如果您检查这些节点内部,它们都没有子属性sex

要解决这个问题,请在代码中再添加一个循环以进入推送 ID(以 -K 开头的键):

ref.child("Doctor").observeSingleEventOfType(.Value, withBlock: { (snapshot) in
        if let result = snapshot.children.allObjects as? [FIRDataSnapshot] {
            for child in result {
                for child2 in child.children {
                    let gender = child2.value!["sex"] as? String
                    print(gender)
                }
            }

        } else {
            print("no results")
        }
    }) { (error) in
        print(error.localizedDescription)
    }

【讨论】:

  • 我在下一行 result2 = result.childred.allObjects as? [FIRDataSnapshot] 错误是“[FIRDataSnapshop] 类型的值没有成员 'children'”
猜你喜欢
  • 1970-01-01
  • 2016-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多