Ios Can';无法获取要放入Firebase中数据库的图像URL

Ios Can';无法获取要放入Firebase中数据库的图像URL,ios,swift,firebase,firebase-realtime-database,firebase-storage,Ios,Swift,Firebase,Firebase Realtime Database,Firebase Storage,我在个人资料图像中添加了一个点击手势,可以从iPhone let tapGesture = UITapGestureRecognizer(target: self, action: #selector(SignUpVC.handleSelectProfileImgView)) profileImage.isUserInteractionEnabled = true profileImage.addGestureRecognizer(tapGesture) func imagePickerCon

我在个人资料图像中添加了一个点击手势,可以从
iPhone

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(SignUpVC.handleSelectProfileImgView))
profileImage.isUserInteractionEnabled = true
profileImage.addGestureRecognizer(tapGesture)

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
        profileImage.image = pickedImage
        selectedImage = pickedImage
    }
    dismiss(animated: true, completion: nil)
}
我试着在之后将此图像放入存储,然后获取要在数据库中设置的下载URL

func uploadProfileImage(userUID: String, completion: @escaping (_ url: URL?) -> Void) {
    let storageRef = Storage.storage().reference().child("profile_images").child(userUID)

    if let imageData = selectedImage.jpegData(compressionQuality: 0.75) {
        storageRef.putData(imageData, metadata: nil) { (metadata, error) in
            guard metadata != nil else { return }
            storageRef.downloadURL(completion: { (url, error) in
                guard let url = url else {return}
                completion(url)
            })
        }
    }
}


@IBAction func signUpPressed(_ sender: Any) {
    Auth.auth().createUser(withEmail: (emailTextField.text!), password: (passwordTextField.text!)) { (result, error) in
        if let _eror = error {
            print(_eror.localizedDescription )
        } else {
            let userUID = result?.user.uid
            self.uploadProfileImage(userUID: userUID!, completion: { (url) in
                guard let url = url else {return}
                Database.database().reference().child("users").child(userUID!).setValue(["username":self.usernameTextField.text!, "email":self.emailTextField.text!, "password":self.passwordTextField.text!, "profileImgURL":url])
            })
        }
    }
}
我试着不调用uploadProfileImage()函数,只将username、email和passsword的值设置为database,就行了。但是,当我调用函数uploadProfileImage()并获取URL时,它失败了

我检查了存储,发现图像已成功上载。这里的问题是我无法获得下载URL

请帮帮我。非常感谢

storageRef.putData(imageData, metadata: nil) { (metadata, error) in
    if error != nil {
        print("error")
    } else {
        // your uploaded photo url.
        storageRef.downloadURL(completion: { (url, error) in
            if error != nil {
                print("error")
            } else {
                print(url!)
            }
    )}
}

您可以使用此方法并成功下载url您可以获得您的下载url,您可以在浏览器中浏览该url,以显示上载的图像。

这不是我想要的,有点像我做的。谢谢,顺便说一句