web-dev-qa-db-fra.com

La valeur de type 'StorageMetadata' n'a pas de membre 'downloadURL'

Hey j'ai besoin d'aide avec ce codage, je ne suis pas sûr de ce qui s'est passé Cela fonctionnait l'autre jour. L'erreur survient après if let ur; = metaData?.downladURL()

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

        guard let imageData = UIImageJPEGRepresentation(image, 0.75) else { return }

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

        storageRef.putData(imageData, metadata: metaData) { metaData, error in
            if error == nil, metaData != nil {
                if let url = metaData?.downloadURL() {
                    completion(url)
                } else {
                    completion(nil)
                }
                // success!
            } else {
                // failed
                completion(nil)
            }
        }
    }
10
Timbology

Vous avez probablement mis à jour vos pods Firebase. Dans Firebase 5.0, ils se sont débarrassés de la fonction metaData?.downladURL(). Vous devez suivre les documents mis à jour sur leur site Web. Copier à partir de là:

// Data in memory
let data = Data()

// Create a reference to the file you want to upload
let riversRef = storageRef.child("images/rivers.jpg")

// Upload the file to the path "images/rivers.jpg"
let uploadTask = riversRef.putData(data, metadata: nil) { (metadata, error) in
  guard let metadata = metadata else {
    // Uh-oh, an error occurred!
    return
  }
  // Metadata contains file metadata such as size, content-type.
  let size = metadata.size
  // You can also access to download URL after upload.
  storageRef.downloadURL { (url, error) in
    guard let downloadURL = url else {
      // Uh-oh, an error occurred!
      return
    }
  }
}
17
Maxim Zh

Mettez à jour vos pods et mettez ceci à la place:

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

    guard let imageData = UIImageJPEGRepresentation(image, 0.75) else { return }

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

    storageRef.putData(imageData, metadata: metaData) { metaData, error in
        if error == nil, metaData != nil {

            storageRef.downloadURL { url, error in
                completion(url)
                // success!
            }
            } else {
                // failed
                completion(nil)
            }
        }
    }
3
Jose Fermin
    // MARK: - handleRegister
func handleRegister() {
    guard let email = emailTextField.text, let password = passwordTextField.text, let name = nameTextField.text else {
        print("Error")
        return
    }

    Auth.auth().createUser(withEmail: email, password: password) { (user, error) in
        if error != nil {
            // print("Error")
            return
        }

        // MARK: - hadleLogin// 

        guard let uid = Auth.auth().currentUser?.uid  else {
            return
        }

        // MARK: - image successful authenficated user

        let imageName = NSUUID().uuidString
        let storageRef = Storage.storage().reference().child("profile_images").child("\(imageName).png")

        if let profileImageUrl = self.profileImageView.image, let  uploadData = UIImageJPEGRepresentation(self.profileImageView.image!, 0.1) {
            storageRef.putData(uploadData, metadata: nil, completion: { (metadata, error) in

                if error != nil, metadata != nil {
                    print(error ?? "")
                    return

                }

                storageRef.downloadURL(completion: { (url, error) in
                    if error != nil {
                        print(error!.localizedDescription)
                        return
                    }
                    if let profileImageUrl = url?.absoluteString {
                        let values = ["name": name, "email": email, "profileImageUrl": profileImageUrl]
                        self.registeUserIntoDatabaseWithUID(uid: uid, values: values as [String : AnyObject])
                    }
                })
            })
        }
    }
}
0
Slava Loye