Ошибка при попытке установить Аутентификацию Firebase для нескольких контроллеров представления - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь создать метод аутентификации Firebase, чтобы пользователи могли создать учетную запись. Однако у меня есть несколько контроллеров представления, которые требовали от меня сохранения информации о пользователях, прежде чем я смог обработать функцию 'CreateUser' Firebase Auth. Поэтому я создал словарь для этого. Я также использую Swift.

Это то, что я имел в виду, когда сказал, что у меня есть несколько контроллеров представления учетной записи.

enter image description here

Затем я добавил созданный словарь в App Delegate, чтобы сохранить информацию о пользователях до того, как в Firebase будет активирован метод createUser.

 // Instance of AppDelegate
static let shared: AppDelegate = UIApplication.shared.delegate as! AppDelegate
// Dictionary for user information
var userInformation: Dictionary<String, Any> = [:]

Вот код для контроллера представления «введите свой адрес электронной почты».

 // After Email is entered, next button is tapped to take user to second step of sign up process
@IBAction func nextButtonTapped(_ sender: UIButton) {
    AppDelegate.shared.userInformation ["createEmail"] = emailTextField.text

И последнее для контроллера «Имя и пароль». Здесь я хотел бы, чтобы электронное письмо, которое было сохранено с последнего контроллера представления, появилось на месте. Я попытался вызвать всю сохраненную информацию, хранящуюся в словаре, чтобы я мог улучшить метод Firebase Auth.auth (). CreateUser.

IBAction func nextButtonTapped(_ sender: UIButton) {
    AppDelegate.shared.userInformation["name"] = nameTextField.text
    AppDelegate.shared.userInformation["password"] = createPassWordTextField.text

    let createEmail = AppDelegate.shared.userInformation["createEmail."]
    let name = AppDelegate.shared.userInformation["name"]
    let password = AppDelegate.shared.userInformation["password"]

    Auth.auth().createUser(withEmail: createEmail, password: password ) { (user, error) in
        if error == nil && user != nil {
            print("User Created!")
            // If user is created go to Welcome Page
            self.performSegue(withIdentifier: "goToWelcomeVC", sender: self)
        } else {
            print("error creating User")

После того, как я хотел бы создать учетную запись пользователя. Затем они будут перенаправлены на страницу приветствия, а затем на главную страницу. Однако я, кажется, получаю эту ошибку. Я случайно не правильно сделал словарь? Для моего контроллера просмотра логина это было очень просто. как вы можете видеть ниже.

 //Login Button

@IBAction func loginButtonTapped(_ sender: UIButton) {
  // Signing in User with Email and Password using Firebase
    if let email = emailTextField.text, let password = passwordTextField.text {

        Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
            // check if user isnt nil
            if user != nil {
                print("Login Successful")
                // user is found, go to home screen
                self.performSegue(withIdentifier: "goToHomeVC", sender: self)
            } else {
                print("loginError")

Я попытался сделать то же самое с контроллерами представления регистрации, указав адрес электронной почты, пароль и имя = UITextField.text. Может кто-нибудь помочь мне в том, что я здесь сделал неправильно?

Редактировать * Вот ошибка, которую я получаю. enter image description here

Спасибо.

1 Ответ

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

Я не знаю, решит ли это вашу проблему, но let createEmail = AppDelegate.shared.userInformation["createEmail."], как вы видите здесь, ваш ключ отличается от первого, где вы сохраняете информацию как ["createEmail"] без точки в конце.

...