gpt4 book ai didi

ios - Swift Firebase 在 child 身上获得值(value)

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

我在接收所有使用 firebase for swift 的帖子时遇到问题。

我想遍历并获取所有发布帖子的用户的所有 imageURL 值。

Post->userID->PostKey->imageURL

这是我一直试图用来检索这些值但无济于事的代码。

var ref: DatabaseReference!

ref = Database.database().reference()

let postsRef = ref.child("posts")
postsRef.observeSingleEvent(of: .value) { (snapshot) in
if snapshot.exists() {
for child in snapshot.children { //.value can return more than 1 match
let snap = child as! DataSnapshot
let dict = snap.value as! [String: Any]
let myPostURL = dict["imageURL"] as! String
print("POST URL: " + myPostURL)

}

} else {
print("no user posts found")
}
}

enter image description here

最佳答案

您的 ref 变量指向 posts 节点:

let postsRef = ref.child("posts")

然后您检索该节点的值,并遍历其子节点:

postsRef.observeSingleEvent(of: .value) { (snapshot) in
if snapshot.exists() {
for child in snapshot.children {

这意味着 childxPCdfc5d...Oms2 的快照。然后,您将获得该子快照的属性字典,并在其中打印 imageURL 属性:

            let snap = child as! DataSnapshot
let dict = snap.value as! [String: Any]
let myPostURL = dict["imageURL"] as! String
print("POST URL: " + myPostURL)

但是如果您在 JSON 中仔细观察,xPCdfc5d...Oms2 节点没有属性 imageURL

posts 下有两个动态级别,因此您需要对值进行两个嵌套循环:

postsRef.observeSingleEvent(of: .value) { (snapshot) in
if snapshot.exists() {
for userSnapshot in snapshot.children {
let userSnap = userSnapshot as! DataSnapshot
for childSnapshot in userSnap.children {
let childSnap = childSnapshot as! DataSnapshot

let dict = childSnap.value as! [String: Any]
let myPostURL = dict["imageURL"] as! String
print("POST URL: " + myPostURL)
}
}
}
}

关于ios - Swift Firebase 在 child 身上获得值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56420640/

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