0

i'm trying firebase user creation. i want to use like below code.

but err and message variables dont change.

err return false everytime

how can i fix this

func CreateUserWithEmail(email : String,password : String)->(Bool,String)
{
    var err = false
    var message = ""
    Auth.auth().createUser(withEmail: email, password: password) { result, error in
        guard let user = result?.user ,error == nil else {
            print(error?.localizedDescription ?? "")
            er = true
            message = error?.localizedDescription ?? ""
            return
        }
    
        
    }
    if !err
    {
        print("giriyoz \(email)")
        self.Profile.userMail = email
        if self.createStandartUserProfile(user: self.Profile) != true {
            self.getStandartUserInfo(email: self.Profile.userMail)
        }
        
    }
   
    //self.createStandartUserProfile(email: Auth.auth().currentUser?.email ?? "" , name: Auth.auth().currentUser?.displayName ?? "")

   return (err,message)
}
Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
  • 2
    You can’t return directly from an asynchronous function like createUser. Search for “callback function”, “completion handler”, or Swift’s new “async/await” – jnpdx Jan 27 '22 at 13:53
  • 1
    Add a print just before `return (err,message)`: `print("Before method return");return (err,message)`, and add one when you do `message = error?.localizedDescription ?? ""`: `print("Inside closure"); message = error?.localizedDescription ?? ""` Which one is printed first? Which one did you think would have been printed first? That's the asynchrone concept you are missing. – Larme Jan 27 '22 at 14:10

0 Answers0