Я бы посоветовал вам снова прочитать документы для входа по электронной почте и паролю. В коде много ошибок. Когда вы создаете пользователя, он входит в систему автоматически, вам не нужно использовать метод входа в систему agin. Во-вторых, вы переходите на новый экран перед сохранением данных в базе данных. Когда у нас есть пользователи по умолчанию, зачем использовать KeychainWrapper?
Сначала создайте класс модели, чтобы вам было легко получить доступ к данным и сохранить данные.
class User {
var userId: String?
var email : String?
var password: String?
// All the other information you want
init(dictionary:[String: AnyObject]){
userId = dictionary["userId"] as? String // "this will be your firebase node //make no typos here you can create a constant if you want"
email = dictionary["email"] as? String
password = dictionary["password"] as? String
// All the other database
}
}
теперь, когда наш класс модели готов, нам будет легко сохранять данные
func createUserWithEmailAndPassword(){
if ( emailField.text != "" && passwordField.text != "" {
let email = emailField.text
let password = passwordField.text
Auth.auth().createUser(withEmail: email, password: password, completion: { (user, error) in
if error != nil {
// create error alert how you want.
return
}
let user = user?.user
let uid = user?.uid
let email = user?.email
let password = user?.password
// saving the user data locally
let userDefaults = UserDefaults
userDefaults.standard.set(uid, forKey: "user_uid")
userDefaults.standard.set(email, forKey: "user_email")
// etc etc
// after that we will be saving this user database to firebase database
// calling firebase save user function here which we will create below
self.registerUserToDatabase(uid: uid!, email: email!, password: password!)
}
}
func registerUserToDatabase(uid: String, email: String, password: String){
let userDb = Database.database().reference.child("people").child("users").child(uid)
// Make sure the key value in the below dictionary matches the User model class you var you made
let userDictionary = ["userId": uid, "email": email,"password": password] as [String: AnyObject]
userDb.updateChildValues(userDictionary) {(err ,userDb) in
if err != nil {
// alert view for error
}
let users = User(dictionary: userDictionary)
// Below we will navigate to to home screen or which ever screen you want
self.navigateToApp()
}
}
создать навигацию к функции контроллера
func navigateToApp(){
// performe seque method
}
// PS что не так с форматером GitHub