ios - 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])
})
}
})
}
解决方案
你应该把你的代码放在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])
}
推荐阅读
- c - 使用头文件的多重定义错误
- r - ggplot中的空等高线图
- ios - SwiftUI 一个文本中心和一个尾随对齐
- c# - 在 C# 中使用 Linq 同时读取两个 xml 文件
- mysql - 我该怎么做这个 sql 请求?
- c++ - 32 位整数溢出
- java - #error running igv **Error: A JNI error has occurred, please check your installation and try again
- questdb - 如何删除 QuestDB 中超过 90 天的记录
- sql-server - SQL Server 替换()
- python - Receiving tab error "inconsistent use of tabs and spaces in indentation" even after converting from spaces to tabs in visual studio code