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

问题描述 投票:0回答:1

我试图从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;
    };
})

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

arrays swift dictionary firebase-realtime-database
1个回答
1
投票

如果您调用.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)
}
© www.soinside.com 2019 - 2024. All rights reserved.