[英]Cannot get value of downloadURL fire storage swift
我有一个结构,它从 firebase 实时数据库中获取有关背景图像的价值。
struct BackStruct: Identifiable {
var id = UUID()
var nameBack, imageUrl, backgroundId: String
}
问题是实时数据库中的图像 url 只是图像的 gs:// 地址
我正在尝试获取所有 URL 以在 View 上加载图像,但 downloadURL 闭包无法返回字符串类型,甚至在范围内看不到全局变量。 我怎么解决这个问题?
for data in self.dataKeys {
let name = data["nameBack"] as? String ?? ""
let imageId = data["backgroundId"] as? String ?? ""
var url = data["imageUrl"] as? String ?? ""
url = url.components(separatedBy: "appspot.com/").last ?? ""
self.storRef.child(url).downloadURL { (dURL, error) in
if let error = error {
print(error)
} else {
url = dURL?.absoluteString ?? ""
}
}
let img = BackStruct(nameBack: name, imageUrl: url, backgroundId: imageId)
self.allImages.append(img)
}
问题不在于获取 URL,而在于您在哪里使用它。 由于 URL 是异步确定的,因此您只能在完成处理程序中使用它。
所以:
self.storRef.child(url).downloadURL { (dURL, error) in
if let error = error {
print(error)
} else {
url = dURL?.absoluteString ?? ""
let img = BackStruct(nameBack: name, imageUrl: url, backgroundId: imageId)
self.allImages.append(img)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.