gpt4 book ai didi

swift - 如何使用 Firebase 和 Swift 检索所有用户的数据

转载 作者:行者123 更新时间:2023-11-30 11:43:12 25 4
gpt4 key购买 nike

我有一个 Firebase 数据库,如下所示(Json):

       {
"user" : {
"UVHpZfD60EWcYDbeV60ENqXaioA3" : {
"email" : "thisisanothertest@gg.gg",
"location" : {
"latitude" : 37.785834,
"longitude" : -122.406417
},
"profile" : {
"alter" : "23",
"geschlecht" : "männlich",
"name" : "Mario1"
}
},
"nEsKd9uIOnSmVuMbAK0K2X1Dz6A3" : {
"email" : "thisisatest@gg.gg",
"location" : {
"latitude" : 37.785834,
"longitude" : -122.406417
},
"profile" : {
"alter" : "23",
"geschlecht" : "männlich ",
"name" : "Mario"
}
}
}

问题:现在我想从所有用户那里获取位置(纬度和经度),以便稍后将它们放置在 map 上。通过执行以下代码,我可以非常轻松地获取单个用户的位置。但我怎样才能同时获取所有用户的数据呢?

 var ref: DatabaseReference!
ref = Database.database().reference()
let userID = Auth.auth().currentUser?.uid
ref.child("user").child(userID!).child("location").observeSingleEvent(of: .value, with: { (snapshot) in
// Get user value
let value = snapshot.value as? NSDictionary
let lat = value?["latitude"] as? Double ?? 0.0
let long = value?["longitude"] as? Double ?? 0.0

我已经发现了类似的问题here

所以我尝试了上面链接中的代码:

let usersRef = ref.child("users")
usersRef.observeSingleEvent(of: .value, with: { (snapshot) in

for snap in snapshot.children {
let userSnap = snap as! FIRDataSnapshot
let uid = userSnap.key //the uid of each user
let userDict = userSnap.value as! [String:AnyObject] //child data
let location = userDict["Location"] as! String
print("key = \(uid) is at location = \(location)")
}
})

但是通过这段代码我只能获取所有电子邮件地址。将“位置”更改为“电子邮件”。如何再下一个节点访问“位置”节点并获取所有用户的经纬度?

谢谢:)

最佳答案

您似乎拼错了字典的 location 键:

let location = userDict["Location"] as! [String: AnyObject]

替换为:

let location = userDict["location"] as! [String: AnyObject]

您始终可以在打印行处放置一个断点,并使用控制台中的 po location 查看位置字典的样子。

关于swift - 如何使用 Firebase 和 Swift 检索所有用户的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49115969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com