不确定如何访问firebase数据库中的每个值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不确定如何访问firebase数据库中的每个值相关的知识,希望对你有一定的参考价值。

我试图从firebase实时数据库中读取值。但是,当我尝试阅读它时,我最终得到的数据结构无法访问任何值。

  ref.child("messages").observeSingleEvent(of: .value, with: { (snapshot) in
        if let data = snapshot.value as? [String: Any] {
            let values = Array(data.values)

             for objects in values{
                 print(objects)
            }
        }

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

我的目标是:

    39
    -121
    "rhwkfncdnfk"
    1000

    39.583869396
    -125.38589543
    "This is the first message"
    100

但是在控制台中,我得到的值是:

    {
        CoordinatesLat = 39;
        CoordinatesLong = "-121";
        Message = rhwkfncdnfk;
        Range = 1000;
   }
   {
        CoordinatesLat = "39.583869396";
        CoordinatesLong = "-125.38589543";
        Message = "This is the first message";
        Range = 100;
   }

当我打印snapshot.value时,我得到:

 Optional({
    "2B3BF5F1-E9DF-4292-9278-15B8C5849C15" =     {
        CoordinatesLat = "39.583869396";
        CoordinatesLong = "-125.38589543";
        Message = "This is the first message";
        Range = 100;
    };
     "7C000DB1-EA91-4129-B944-A0A09E6D24C7" =     {
        CoordinatesLat = 39;
        CoordinatesLong = "-121";
        Message = rhwkfncdnfk;
        Range = 1000;
    };
})

我不确定如何解析正在打印的内容并获得实际值。

答案

如果您调用.value,Firebase将返回您存储的类型中的基础节点/属性的值。所以你的Message将作为一个字符串返回,Range作为一个数字返回,纬度和经度作为字符串返回(因为这就是你存储它们的方式)。

ref.child("messages").observeSingleEvent(of: .value, with: { (snapshot) in
    print(snapshot.childrenCount); // prints the number of messages

    for message in snapshot.children.allObjects as! [FIRDataSnapshot] {
        print(message.key); // "2B3BF5F1-E9DF-4292-9278-15B8C5849C1"

        print(message.childSnapshot(forPath: "Message").value); "This is the first message"
        print(message.childSnapshot(forPath: "Range").value); 100

    }

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

以上是关于不确定如何访问firebase数据库中的每个值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 上的 Firebase 中获取嵌套键中的值

如何通过 Firebase SDK 访问 Firestore 中的虚拟文档?

如何解析 Firebase FDataSnapshot 对象?

我应该在哪里从 UIViewController 中的 firebase 加载数据

从 firebase 数据库中获取多个值

访问 firebase 数据库中的数据