2016-06-08 14 views
1

Итак, у меня возникла проблема с кодом по какой-то причине. У меня есть приложение Swift и контроллер вида регистрации, который должен регистрировать пользователей с электронной почтой в Firebase в качестве бэкэнд (я обновил приложение до последней версии Firebase). Я создал несколько точек останова, чтобы увидеть, где он перестает работать, и получается, что после того, как:Firebase подписаться на Swift

FIRAuth.auth()?.createUserWithEmail(email!, password: password!, completion: { 
      user, error in 

он не выполняет всю проверку на ошибки или код успеха, он просто перемещается за пределы сферы из createUserWithEmail способ. У электронной почты и пароля есть значения, и я вижу их, но он просто продолжается вне области действия метода. Я импортировал Firebase в качестве модуля, он не выдавал никаких предупреждений или ошибок во время сборки или во время компиляции

Я не знаю, почему это происходит. Вот код для кнопки ОТКРЫТЬ СЧЕТ:

@IBAction func signUpTapped(sender: ButtonWhite) { 

    let email = emailTextField.text 
    let password = passwordTextField.text 
    let repeatPassword = repeatPasswordTextField.text 

    if email != "" && password != "" && repeatPassword != "" { 

     if password == repeatPassword { 

      FIRAuth.auth()?.createUserWithEmail(email!, password: password!, completion: { 
       user, error in 

       print(user) 
       // Error Case 
       if error != nil { 

        if let errorCode = FIRAuthErrorCode(rawValue: error!.code) { 
         switch errorCode { 
         case .ErrorCodeInvalidCredential: 
          showAlert(title: "Invalid Credentials!", msg: "Please, try again.", actionButton: "OK", viewController: self) 
         case .ErrorCodeNetworkError: 
          showAlert(title: "Network Error!", msg: "An error occurred while attempting to contact the authentication server. Try again", actionButton: "OK", viewController: self) 
         case .ErrorCodeOperationNotAllowed: 
          showAlert(title: "Bummer!", msg: "The administrator disabled sign in with the specified identity provider", actionButton: "OK", viewController: self) 
         case .ErrorCodeEmailAlreadyInUse: 
          showAlert(title: "Oops!", msg: "The email used to attempt a sign up already exists. Please, try again", actionButton: "OK", viewController: self) 
         case .ErrorCodeInvalidEmail: 
          showAlert(title: "Error", msg: "The email is invalid. Try again.", actionButton: "OK", viewController: self) 
         case .ErrorCodeTooManyRequests: 
          showAlert(title: "Error", msg: "Too many requests were made to a serve method", actionButton: "OK", viewController: self) 
         case .ErrrorCodeAccountExistsWithDifferentCredential: 
          showAlert(title: "Error", msg: "User account exists with different credentials than currently submitted. Try again.", actionButton: "OK", viewController: self) 

         default: 
          showAlert(title: "Ups!", msg: "An error occur. Please, try again.", actionButton: "OK", viewController: self) 
         } 
        } 

        SVProgressHUD.dismiss() 


       } else { 

       // Success Case 

        // Create Firebase User 
        let userData = ["provider" : "email", "password": password!] 
        DataService.ds.createFirebaseUser(user!.uid, user: userData) 
        print("firebase user created!") 
        self.loginUser() 
       } 
      }) 

     } else { 
      showAlert(title: "Password Mismatch", msg: "The passwords you've entered do not match. Please, try again", actionButton: "OK", viewController: self) 
     } 
+0

Вы запустили 'FIRApp.configure()' 'в своем AppDelegate :: didFinishLaunchingWithOptions'? Кроме того, вы не всегда вводите блок завершения с первой попытки. Установите контрольную точку внутри блока завершения и посмотрите, не сломаетесь ли вы там. –

+0

Да! Я сделал. Нет ошибок. – Dani

+0

Попробуйте добавить эту возможность запуска: Продукт -> Схема -> Изменить схему -> Выполнить (с левой стороны) -> Аргументы, переданные при запуске. Нажмите кнопку «плюс» и добавьте следующее: -FIRAnalyticsDebugEnabled –

ответ

0

Пока нет никакой ошибки, FIRAuth.auth()?.createUserWithEmail не создаст пользователь немедленно, не было бы никакой необходимости для

// Create Firebase User 
let userData = ["provider" : "email", "password": password!] 
DataService.ds.createFirebaseUser(user!.uid, user: userData) 
print("firebase user created!") 
self.loginUser() 

проверить firebase консоли, чтобы увидеть, если пользователи были созданы

Смежные вопросы