ios - 试图在 Firebase 中创建一个 UIImageurl 常量
问题描述
我遇到的麻烦是在firebase中制作一个常量,它是一个uiimageurl的字符串。我将 url 存储在 firebase 数据库中。它看起来像这样:
在以前版本的 firebase 和 swift 中,您只需这样做即可:
let imageUrl = User.profileImageUrl
现在这不起作用,我需要找到有关如何执行此操作的更新版本。非常感谢您的回答,非常感谢!
解决方案
您需要先保存图像。然后,您将能够获取保存图像的 url。这是一个例子。
func saveButtonPressed() {
let storageRef = Storage.storage().reference(withPath: "profile_images")
let imageData = profileImageView.image?.jpegData(compressionQuality: 0.8)
guard let data = imageData else { return }
let metadata = StorageMetadata()
metadata.contentType = "image/jpeg"
// Here you can decide where to save the image. In your case it will look something like this.
// let ref = Storage.storage().reference(withPath: "profile_images").child(user.uid)
storageRef.putData(data, metadata: metadata) { (metadata, error) in
if let _ = error {
// Error Handling...
return
}
storageRef.downloadURL { (url, error) in
if let _ = error {
// Error Handling...
return
}
guard let url = url else { return }
let urlString = url.absoluteString
print(urlString)
}
}
}
希望这可以帮助。
因此,如果您想获取已保存在存储中的图像的 url。您首先需要它所在的引用。
//Example as above
let storageRef = Storage.storage().reference(withPath: "profile_images").child(user.uid)
storageRef.downloadURL { (url, error) in
if let _ = error {
// Error Handling...
return
}
guard let url = url else { return }
let urlString = url.absoluteString
print(urlString)
}
如果参考中没有图像,您将收到错误消息。它与我提供的第一个答案基本相同,但没有保存。由于图像已经存在,您可以只使用 ref.downloadURL。希望这可以帮助。
推荐阅读
- python - 具有多个条件和不同更新的 SQLite 命令
- javascript - 防止表单提交 jQuery
- python - 当每个文件名不包含日期时,使用 Python 从一系列文件名中删除日期?
- spring-boot - 如何从 KeyCloak 获取用户组并用 Java 打印它们
- java - 为什么使用 Spring 的依赖注入而不是常规依赖注入?
- flutter - Flutter变量在更改时不会改变背景颜色?
- r - 如何将给定变量的演变添加为 R 数据表中的新变量?
- php - 如何将相同的标识列添加到不同的表?
- azure-active-directory - west-us2 区域的 Azure Log Analytics API 权限
- javascript - Watson Assistant 丢弃了 webhook 参数