繁体   English   中英

无法快速获取downloadURL fire storage的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM