【问题标题】:Cannot get value of downloadURL fire storage swift无法快速获取 downloadURL 火存储的值
【发布时间】:2021-03-01 14:48:14
【问题描述】:

我有一个结构,它可以从 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)
}

【问题讨论】:

    标签: swift firebase url firebase-storage


    【解决方案1】:

    问题不在于获取 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)
          }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 2020-04-27
      • 2021-03-18
      • 1970-01-01
      • 2022-01-26
      相关资源
      最近更新 更多