gpt4 book ai didi

ios - Firebase 在 swift 中检索 autoId 值

转载 作者:行者123 更新时间:2023-11-28 15:10:34 26 4
gpt4 key购买 nike

我想检索图像值。节点看起来像这样,我想检索 url1、url2、url3。

 "Post": {
"uid": {
"Text": "some text",
"images": {
autoID1: url1,
autoID2: url2,
autoID3: url3
}
}
}

问题是 key 是自动生成的。所以,我一般都是这样投的。

if let dictionary = snapshot.value as? [String:Anyobject] 
let text = dictionary["text"] as? String

但在这种情况下,我不知道如何转换 autoID 键并获取值。我尝试了下面的代码,但错误说

Could not cast value of type '__NSDictionaryM' (0x10af491c8) to 'NSString' (0x10a0bad68).

 func fetchImages() {
ref.child("Post").child(uid!).child("images").observe(.value, with: { (snapshot) in

let downloadUrl = snapshot.value as! String
let stoRef = Storage.storage().reference(forURL: downloadUrl)

stoRef.getData(maxSize: 1*1024*1024, completion: { (data, error) in
let pic = UIImage(data: data!)
self.imagesArray.append(pic!)
})

}, withCancel: nil)
}

另外,如果有三个 url,我是否应该使用像 for snap in snapshot.children 这样的循环?我应该如何遍历这些 url 并放入 imagesArray?提前致谢!

最佳答案

你们很亲近。要记住的是,当你得到

.child("images")

它实际上是一个包含 child 的节点

"images": {
autoID1: url1,
autoID2: url2,
autoID3: url3

并且不是字符串而是另一个键:值对,其中键是“图像”,值是子节点。

要获取子节点,遍历快照中的子节点,将每个子节点都转换为快照(另一个键:值对),键为 autoID1 等,值为 url(字符串)

let imagesRef = self.ref.child("Post").child("uid_0").child("images")
imagesRef.observeSingleEvent(of: .value, with: { snapshot in
for child in snapshot.children {
let snap = child as! DataSnapshot
//let key = snap.key //autoID1, autoID2 etc
let downloadUrl = snap.value as! String
let stoRef = Storage.storage().reference(forURL: downloadUrl)
//get your pic
}
})

如果 ref 是一个类 var,正如它在您的问题中出现的那样,它应该被引用为

self.ref

此外,如果您想在节点上留下一个观察者以便您可以收到更改通知,请使用 .observe。在我的例子中,我只想读一次,所以我使用了 observeSingleEvent,因为我只想读一次。

关于ios - Firebase 在 swift 中检索 autoId 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47738065/

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