Swift & Firebase Невозможно присвоить значение типа 'AuthDataResult?' напечатать 'Пользователь? - PullRequest
0 голосов
/ 11 апреля 2019

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

var user = Auth.auth().currentUser


Auth.auth().createUser(withEmail: theEmail, password: thePassword, completion: { (user, error) in
  if let theError = error {

    var errMessage = "An unknown error occured."
    if let errCode = AuthErrorCode(rawValue: (theError._code)) {
      switch errCode {

      case .invalidEmail:
        errMessage = "The entered email does not meet requirements."
      case .emailAlreadyInUse:
        errMessage = "The entered email has already been registered."
      case .weakPassword:
        errMessage = "The entered password does not meet minimum requirements."
      default:
        errMessage = "Please try again."
      }
    }
    completion(nil, errMessage)
  } else {
    self.user = user
    completion(user, nil)
  }
})

Вкл. self.user = user сообщение об ошибке Cannot assign value of type 'AuthDataResult?' to type 'User?'

При completion(user, nil) сообщение об ошибке Cannot convert value of type 'AuthDataResult?' to expected argument type 'User?'

Может кто-нибудь объяснить, почему этот код, который когда-то работал, больше не работает, и что я могу сделать, чтобы привести его в соответствие с текущими ожиданиями

1 Ответ

2 голосов
/ 11 апреля 2019

Заменить

self.user = user

на

Auth.auth().createUser(withEmail: theEmail, password: thePassword, completion: { (authData, error) in

    .....

    if let res = authData?.user {
      self.user = res
    }

}
...