Firebase: не найти пользователя при входе - PullRequest
0 голосов
/ 24 сентября 2018

Когда я пытаюсь войти в свое приложение, оно вылетает и сообщает мне

Неожиданно обнаружен ноль при развертывании необязательного значения

в этой строке кода

let user = Auth.auth().currentUser!.uid

У меня есть "autologin" в AppDelegate:

[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        FirebaseApp.configure()
        //Send previously logged in users to main menu, or send to signIn screen
        Auth.auth().addStateDidChangeListener { auth, user in
            if let user = user {
                // Take user to a home page
                let mainStoryboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
                let homePage = mainStoryboard.instantiateViewController(withIdentifier: "TabBarController") as! CustomTabBarController
                self.window?.rootViewController = homePage
            } else {
                // Take user to sign In View Controller
                let mainStoryboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
                let signIn = mainStoryboard.instantiateViewController(withIdentifier: "SignInViewController") as! SignInViewController
                self.window?.rootViewController = signIn
            }
        }
        return true
    }    

Странная вещь, когда я регистрирую нового пользователя, я могу войти в систему с этимпользователь после регистрации, но если я снова выйду из системы, то произойдет сбой при входе в систему.

РЕДАКТИРОВАТЬ *
Вот как пользователь вошел в систему:

 @IBAction func logInButton(_ sender: UIButton) {

        if (emailTextField.text?.isEmpty)!{
            errorMsg(title: "Error", message: "Missing Email")
        }
        if (passwordTextField.text?.isEmpty)! {
            errorMsg(title: "Error", message: "Missing password")
        }
        else
        {
            Auth.auth().signIn(withEmail: emailTextField.text!, password: passwordTextField.text!) { (user, error) in
                if user != nil {
                    self.performSegue(withIdentifier: "ToMenuFromLoginSegue", sender: self)

                }
                else {
                    if let myError = error?.localizedDescription {
                        print(myError)
                    }

                }
                //Diplay errormsg for loginErrors
                if error != nil {
                    if let errCode = AuthErrorCode(rawValue: error!._code) {

                        switch errCode {
                        case .invalidEmail:
                            self.errorMsg(title: "Feil", message: "Invalid Email")
                        case .wrongPassword:
                            self.errorMsg(title: "Error", message: "Wrong password")
                        case .userNotFound:
                            self.errorMsg(title: "Error", message: "No user registered with that username")
                        case .networkError:
                            self.errorMsg(title: "Error", message: "Please check connection")
                        default:
                            print("Create User Error: \(error!)")
                        }
                    }
                }
            }

        }
    }

1 Ответ

0 голосов
/ 24 сентября 2018

Проверьте, подключен ли переход непосредственно к logInButton в раскадровке.Если это так, segue будет работать без какой-либо аутентификации.

...