Итак, у меня возникла проблема с кодом по какой-то причине. У меня есть приложение 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)
}
Вы запустили 'FIRApp.configure()' 'в своем AppDelegate :: didFinishLaunchingWithOptions'? Кроме того, вы не всегда вводите блок завершения с первой попытки. Установите контрольную точку внутри блока завершения и посмотрите, не сломаетесь ли вы там. –
Да! Я сделал. Нет ошибок. – Dani
Попробуйте добавить эту возможность запуска: Продукт -> Схема -> Изменить схему -> Выполнить (с левой стороны) -> Аргументы, переданные при запуске. Нажмите кнопку «плюс» и добавьте следующее: -FIRAnalyticsDebugEnabled –