首页 > 解决方案 > iOS Firebase - 获取照片网址的问题(未解析的标识符)

问题描述

我试图获取用户选择的照片的网址,然后将其发送到 Firebase。我在最后一行收到此错误: 使用未解析的标识符'profileImageUrl';你的意思是“profileImage”吗?

@IBAction func signUpBtn(_ sender: Any) {
    Auth.auth().createUser(withEmail: emailTextField.text!, password: passwordTextField.text!, completion: { (user, error) in
        if error != nil {
            print("error")
            return
        }


        let storageRef = Storage.storage().reference(forURL: "gs://justforpractice.appspot.com").child("profile_image").child(userID)
        if let profileImg = self.selectedImage, let imageData = self.selectedImage?.jpegData(compressionQuality: 0.1){
            storageRef.putData(imageData, metadata: nil, completion: { (metadata, error) in
                if error != nil {
                    return
                }


                storageRef.downloadURL { (url, error) in
                    guard let profileImageUrl = url else {
                        // An error occurred!
                        return
                    }
                }

                let ref = Database.database().reference()
                let usersReference = ref.child("users")
                let newUserReference = usersReference.child(userID)
                newUserReference.setValue(["username": self.usernameTextField.text!, "email": self.emailTextField.text!, "profileImageUrl": profileImageUrl])

            })
        }
    })
}

标签: iosswiftfirebase

解决方案


你应该把你的代码放在storageRef.downloadUrl闭包中,这样你就可以访问 unwrapped url

storageRef.downloadURL { (url, error) in
    guard let profileImageUrl = url else {
        // An error occurred!
        return
    }

    let ref = Database.database().reference()
    let usersReference = ref.child("users")
    let newUserReference = usersReference.child(userID)
    newUserReference.setValue(["username": self.usernameTextField.text!, "email": self.emailTextField.text!, "profileImageUrl": profileImageUrl])
}

推荐阅读