Я установил переменную URLstring в моем ViewController, но когда я пытаюсь установить значение для «profileImageURL» в базе данных реального времени, он не показывает необходимый URL-адрес, даже когда я извлекаю его из storageRef, он печатается хорошо.
Я думал, что это потому, что я объявил переменную URLString внутри метода (в данном случае это кнопка), но даже сейчас, когда я объявил это в ViewController, он не работает.
это код:
Auth.auth().createUser(withEmail: emailTextField.text!, password: passwordTextField.text!) { (user, error) in
if error != nil{
print(error!.localizedDescription)
return
}
let uid = Auth.auth().currentUser?.uid
let storageRef = Storage.storage().reference(forURL: "gs://instagramclone-1ed36.appspot.com").child("Profile_Images").child(uid!)
let ref = Database.database().reference()
if let profileIMG = self.selectedImage, let imageData = profileIMG.jpegData(compressionQuality: 0.1){
storageRef.putData(imageData, metadata: nil, completion: { (metadata, error) in
if error != nil {
return
}
storageRef.downloadURL(completion: { (url, error) in
if error != nil {
return
}else {
self.URLString = url!.absoluteString
print("\n\n the URLString is : \(self.URLString)\n\n")
}
})
let userReference = ref.child("users")
let newUserReference = userReference.child(uid!)
newUserReference.setValue([ "profileImageURL": self.URLString])
})
}
}