swift - 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:// 路径,并且无法访问。
如果有人能指出(也许是明显的)错误,那将非常有帮助,并提前致谢。
解决方案
需要获取图片的下载地址,可以通过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 存储在您使用的任何数据库中。
推荐阅读
- java - Java 流 sorted() 行为取决于下一个 takeWhile() 调用
- reactjs - 来自 AWS Amplify 上托管的反应应用程序的受保护路由的访问被拒绝错误
- c - 写入文件时如何删除空格和换行符?
- android - 阅读 XSSF 工作簿 (.xlsx) 会使 Android 应用程序崩溃
- c - 有没有办法在 Linux 中拦截文件处理请求?
- python-3.x - 如何使用pickle将图像和变量保存到文件中?
- node.js - 在快速设置中丢失了 firebase DNS 提升 TXT 文件。怎么能找回来。?
- linux - Docker 卷将文件绑定为远程 linux 服务器上的目录
- inno-setup - 删除 Inno 设置上的视觉效果
- flutter - AlertDialog 应该显示另一个 AlertDialog 但直到我关闭它并再次打开它才发生