加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Firebase swift无法检索所有子值

发布时间:2020-12-14 04:55:16 所属栏目:百科 来源:网络整理
导读:我在 Swift构建的iOS应用程序中有一段代码,用于从Firebase实时数据库中检索所有节点.当我执行下面的代码时,我注意到它没有返回所有子节点. 当我查询未单独返回的特定节点时,首先代码返回’nil’,然后在第二次尝试时检索节点. (在此过程中不做任何代码更改).
我在 Swift构建的iOS应用程序中有一段代码,用于从Firebase实时数据库中检索所有节点.当我执行下面的代码时,我注意到它没有返回所有子节点.

当我查询未单独返回的特定节点时,首先代码返回’nil’,然后在第二次尝试时检索节点. (在此过程中不做任何代码更改).在此过程之后,节点开始显示结果,并检索所有节点功能.

示例1:首先返回nil,然后在第二次尝试时返回节点.我可以从控制台看到,并且肯定存在于数据库中.

ref?.child("transactions").child(email).child("14526452327").observeSingleEvent(of: .value,with: { (snapshot) in
                // Get user value
                let value = snapshot.value as? NSDictionary
                        print(value)
                        print("!!****************!!")
                // ...
            }) { (error) in
                print(error.localizedDescription)
            }

以下内容用于检索所有子值;首先,这并没有获得所有节点,但是在运行示例1中的代码(两次)后,它开始返回有问题的节点.

ref?.child("transactions").child(email).observeSingleEvent(of: .value,with: { (snapshot) in

        let childrenCount = snapshot.childrenCount
        var counter : Int = 0

        for trans in snapshot.children.allObjects as! [DataSnapshot]
        {
            counter = counter + 1

            self.ref?.child("transactions").child(email).child(trans.key).observeSingleEvent(of: .value,with: { (snapshot2) in

Here is a screenshot of the Firebase DB structure;

我还检查了我的Firebase查询和数据限制,我远远没有达到免费帐户的门槛.任何帮助是极大的赞赏.

解决方法

试试这个:

func getData() {
    // Making a reference
    let transactionRef = Database.database().reference(withPath: "transactions")
    transactionRef.observeSingleEvent(of: .value,with: { (snapshot) in

        // Printing the child count
        print("There are (snapshot.childrenCount) children found")    

        // Checking if the reference has some values
        if snapshot.childrenCount > 0 {

            // Go through every child
            for data in snapshot.children.allObjects as! [DataSnapshot] {
                if let data = data.value as? [String: Any] {

                    // Retrieve the data per child


                    // Example
                    let name = data["name"] as? String
                    let age = data["age"] as? Int

                    // Print the values for each child or do whatever you want
                    print("Name: (name)nAge: (age)")
                }
            }
        }
    })
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读