我正在尝试将图像上传到Firebase存储中,然后将用户个人资料保存到数据库中。

但是,似乎没有执行storageRef.putData方法->从不打印“输入数据关闭”。 (打印“ uploadProfileImage被调用”。)

这是在Auth.auth()。createUser闭包中调用的函数。

func uploadProfileImage(_ image:UIImage, completion: @escaping ((_ url:URL?)->())) {
    print("uploadProfileImage called")
    guard let uid = Auth.auth().currentUser?.uid else { return }
    let storageRef = Storage.storage().reference().child("user/\(uid)")

    guard let imageData = image.jpegData(compressionQuality: 0.75) else { return }

    let metaData = StorageMetadata()
    metaData.contentType = "image/jpg"

    storageRef.putData(imageData, metadata: metaData) { metaData, error in
        print("In put data closure")
        if error == nil, metaData != nil {
            storageRef.downloadURL(completion: { (url, error) in
                if let error = error {
                    print("url error")
                } else {
                    completion(url?.absoluteURL)
                }
            })
        }
    }
}


但是我可以在Firebase存储中看到该图像,因此已将其上传。为了保存配置文件,我需要此图像的URL。

谢谢你的帮助!

最佳答案

只需将podfile中的“ FirebaseInstanceID”修复为版本“ 2.0.0”,将执行putData方法。在podfile中看起来像这样:
      pod'FirebaseInstanceID','2.0.0'

我正在使用Xcode 10.2和Swift 5,该技巧仍然有效

关于ios - Firebase Storage putData方法从不执行完成块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54671250/

10-11 17:13