我目前正在看一个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后,你可以根据你的需要对数据做进一步的处理。
如果你有任何问题,请告诉我。
乐于助人!
正确的做法是对podfile进行降级。在你的podfile中,输入
pod 'Firebase/Storage', '4.4.0'
那就可以用了。你不必降级其他podfiles。