Есть несколько проблем, которые необходимо устранить, а затем - основная проблема.
Первое, что Auth.auth (). CurrentUser?является необязательным - это означает, что он может иметь значение или может быть ноль.Делая это ..
let currentUserId = Auth.auth().currentUser?.uid
сообщает вашему коду, что независимо от того, получил ли он значение или ноль, попытайтесь присвоить .uid для currentUserId.
Защитите свой код, безопасно развернув параметры
guard let currentUser = Auth.auth().currentUser else {return}
//now you can access currentUser as it won't be nil
или
if let currentUser = Auth.auth().currentUser {
print("user is authenticated and currentUser is not nil")
} else {
print("not authenticated")
}
Теперь суть проблемы, насколько я понимаю, заключается в том, что вы вообще не аутентифицируете пользователя, и это должно произойти доДоступ к Auth.auth (). currentUser
Вот полная функция аутентификации с обработкой ошибок
func authUser(user: String, pw: String) {
Auth.auth().signIn(withEmail: user, password: pw, completion: { (auth, error) in
if let x = error {
let err = x as NSError
switch err.code {
case AuthErrorCode.wrongPassword.rawValue:
print("wrong password")
case AuthErrorCode.invalidEmail.rawValue:
print("invalued email")
default:
print("unknown error")
}
} else {
if let user = auth?.user { //note; safely unwrap optional
print("uid: \(user.uid)")
}
}
})
}