ios - “StorageMetadata”类型的值在 swift 和 firebase 中没有成员“downloadURL”
问题描述
我目前正在观看一段 youtube 视频,告诉我如何制作社交媒体应用程序。但是我在写代码的时候,遇到了这个函数的错误。这是一个非常烦人的错误,所以如果可以,请帮助我
func setupUser(userUid: String) {
if let imageData = self.userImgView.image!.jpegData(compressionQuality: 0.2) {
let imgUid = NSUUID().uuidString
let metaData = StorageMetadata()
Storage.storage().reference().child(imgUid).putData(imageData, metadata: metaData) { (metadata, error) in
let downloadURL = metadata?.downloadURL()?.absoluteString
let userData = [
"username": self.usernameField.text!,
"userImg": downloadURL!
] as [String : Any]
Database.database().reference().child("users").child(userUid).setValue(userData)
self.performSegue(withIdentifier: "toFeed", sender: nil)
}
}
}
错误发生在这段代码中......
let downloadURL = metadata?.downloadURL()?.absoluteString
Stackoverflow 上还有其他类似的问题,但我尝试了所有这些问题,但出现了错误。你能帮我么。你能稍微编辑一下我的代码来修复它吗?请不要直接引导我查看文档。我试过了,但没有用
解决方案
您可以使用此功能在 Firebase 存储中上传内容
typealias blockCompletedWith = (Bool, String) -> Void
func uploadToFirebaseStorage(data: Data, path: String, blockCompletedWith: @escaping blockCompletedWith) {
let metadata = StorageMetadata()
metadata.contentType = "image/jpeg" //Modify as per your need
let store = Storage.storage()
let storeRef = store.reference().child(path)
let _ = storeRef.putData(data, metadata: metadata) { (metadata, error) in
guard let _ = metadata else {
print("error occured: \(error.debugDescription)")
blockCompletedWith(false, "")
return
}
storeRef.downloadURL(completion: { (url, error) in
if let urlText = url?.absoluteString {
blockCompletedWith(true, urlText)
}
else {
blockCompletedWith(false, "")
}
})
}
}
从此函数获取 URL 后,您可以根据需要对数据进行进一步处理。
请让我知道,如果你有任何问题。
乐意效劳!
推荐阅读
- service - Symfony 4 参数没有类型提示,你应该明确配置它的值
- docker - 根据用户命令行参数启用/禁用 Jmeter“持续时间”调度程序
- ios - 是否可以在 iOS 中更改应用内购买类型?
- javascript - 搜索 JSON 格式的数组
- javascript - 如何搜索具有最小值的对象?
- javascript - 使用 php 中的本地存储在页面刷新时保存多个复选框 [] 检查状态
- mysql - Ubuntu 14 - MySQL14 - 分配更多内存
- javascript - Ember 助手可以用作实用程序吗?
- php - 单个 Woocommerce 产品自定义变体添加到购物车按钮
- html - BeautifulSoup 在 div > span > a 中查找所有标题和 href