不确定如何访问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 对象?