首页 > 解决方案 > FirebaseStorageUI + sdwebimage

问题描述

我今天更新了 firebase pod,但遇到了一些问题。首先,我收到了这个错误:

No such module 'FirebaseStorageUI'

现在我把它改成了:

import FirebaseStorage
import FirebaseUI

这似乎可行,因为所有功能仍然可用,例如存储和 sd_webimage。

现在我收到此错误:

Cannot convert value of type 'StorageReference' to expected argument type 'URL?'

下面的代码在更新之前工作

let storageRef = Storage.storage().reference().child("user/thomas_1")
self.profileImageView.sd_setImage(with: storageRef, placeholderImage: UIImage(named: "placeholder"), completed: { (image, error, cacheType, storageRef) in
    if image != nil && error != nil {
        UIView.animate(withDuration: 0.3) {
            self.profileImageView.alpha         = 1
        }
    }
})

现在它没有,它给了我那个错误,我把它改成了一个 url,但它仍然不起作用或给我错误。遵循文档中的示例和上述方法的示例应用程序应该可以工作。我还发现该 url 是直接的 gs:// 路径,并且无法访问。

如果有人能指出(也许是明显的)错误,那将非常有帮助,并提前致谢。

标签: swiftfirebasefirebase-storagefirebaseuisdwebimage

解决方案


需要获取图片的下载地址,可以通过downloadURL方法获取,如下:

let storageRef = Storage.storage().reference().child("user/thomas_1")

storageRef.downloadURL { url, error in
  guard let url = url else { return }
  self.profileImageView.sd_setImage(with: storageRef, placeholderImage: UIImage(named: "placeholder"), completed: { (image, error, cacheType, storageRef) in
    if image != nil && error != nil {
      UIView.animate(withDuration: 0.3) {
        self.profileImageView.alpha = 1
      }
    }
  })
}

这将起作用,但不是像上面的示例那样每次都生成下载 URL,我建议在最初上传图像后立即生成它,然后将此下载 URL 存储在您使用的任何数据库中。


推荐阅读