У меня проблемы с Firebase, когда моя попытка получить переменную uid
с Auth.auth().currentUser?.uid
, кажется, возвращает ноль.
Я поместил различные операторы печати вокруг функции (я опубликовалполная функция ниже), чтобы увидеть, будут ли они вызваны - если я помещу оператор print в if let user = user
, он не будет вызван.Если я закомментирую if let user = user
(и его заключительную скобку), оператор print будет успешно вызван, поэтому я предполагаю, что user
равен нулю.
Теперь, если я помещу отпечаток после guard let uid = Auth.auth().currentUser?.uid else {return}
, оператор print снова не вызывается, что наводит меня на мысль, что uid
равно нулю, а выражение guard возвращается.
Я не уверен, почему user
и Auth.auth().currentUser?.uid
оба равны нулю.Как я могу изменить это, чтобы успешно получить мою uid
переменную?
Вот полная функция для обеспечения некоторого контекста:
@IBAction func emailSignupNextPressed(_ sender: Any) {
// Make sure text fields aren't empty
guard nameField.text != "", emailField.text != "", passwordField.text != "", confirmPasswordField.text != "" else {return}
if passwordField.text == confirmPasswordField.text {
Auth.auth().createUser(withEmail: emailField.text!, password: passwordField.text!, completion: { (user, error) in
if let error = error {
print(error.localizedDescription)
}
if let user = user {
guard let uid = Auth.auth().currentUser?.uid else {return}
// Use name as Firebase display name for readability
let changeRequest = Auth.auth().currentUser!.createProfileChangeRequest()
changeRequest.displayName = self.nameField.text!
changeRequest.commitChanges(completion: nil)
// Create child node from userStorage "users". Profile image set to user's unique ID
let imageRef = self.userStorage.child("\(uid).jpg")
let data = UIImageJPEGRepresentation(self.selectProfileImageView.image!, 0.5)
// Upload image to Firebase
let uploadTask = imageRef.putData(data!, metadata: nil, completion: { (metadata, err) in
if err != nil {
print(err!.localizedDescription)
}
imageRef.downloadURL(completion: { (url, er) in
if er != nil {
print(er?.localizedDescription as Any)
}
if let url = url {
emailUserPicString = url.absoluteString
print("\n\n\npic:\(emailUserPicString)\n\n\n")
if emailUserPicString == "" {
let alertController = UIAlertController(title: "Profile Picture Error", message: "Don't forget to choose a profile picture!", preferredStyle: UIAlertControllerStyle.alert)
let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: {(alert :UIAlertAction!) in
})
alertController.addAction(okAction)
self.present(alertController, animated: true, completion: nil)
return
} else {
self.performSegue(withIdentifier: "emailToSetup", sender: nil)
}
}
})
})
uploadTask.resume()
}
})
} else {
print("Passwords don't match")
passwordAlert()
}
}