#swift #firebase #firebase-authentication
#swift #firebase #firebase-аутентификация
Вопрос:
Я пересматриваю старое приложение, но прежде чем работать над новыми функциями, я хочу исправить все ошибки. Я не уверен, вызвано ли это новым синтаксисом 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:
Заменить
self.user = user
с
Auth.auth().createUser(withEmail: theEmail, password: thePassword, completion: { (authData, error) in
.....
if let res = authData?.user {
self.user = res
}
}