I have this class I wrote which stores the error messages from the firebaseauth if a error occurs. The problem is that the variable on first return is not set and on second return is. variable _errorMsg is empty on first return of method registerUser
Why is it not storing the variable when it's initially triggered? // // Authentication.swift import Firebase import FirebaseAuth import FBSDKCoreKit import FBSDKLoginKit class Authentication: UIViewController { public var _errorMsg: String = "" private var createdUser: Bool! private var _userSignedIn = false /** * Registers a user using email/password method */ func registerUser(email : String, password: String) -> Bool{ createdUser = false FIRAuth.auth()?.createUser(withEmail: email, password: password, completion: {(user, error) in if error != nil { if let errCode = FIRAuthErrorCode(rawValue: (error?._code)!) { switch errCode { case FIRAuthErrorCode.errorCodeInvalidEmail: self._errorMsg = "Invalid Email" print("DEBUG: invalid email") case FIRAuthErrorCode.errorCodeEmailAlreadyInUse: self._errorMsg = "Email already in use" print("DEBUG: in use") case FIRAuthErrorCode.errorCodeWeakPassword: self._errorMsg = "Enter a stronger password" print("DEBUG: stronger password") default: print("DEBUG: Create User Error: ") self._errorMsg = "Unknown Error " } } print("DEBUG: New user failed to create") }else{ print("DEBUG: New user created ") self.createdUser = true } }) return self.createdUser } /** * Registers a user using facebook login method */ func facebookLogin() -> Bool{ let facebookLogin = FBSDKLoginManager() facebookLogin.logIn(withReadPermissions: ["email"], from: self){ (result, error) in if error != nil { print("DEBUG: Unable to authenticate with Facebook \(error)" ) }else if result?.isCancelled == true { print("DEBUG: User cancelled authenticate with Facebook \( error)") }else { print("DEBUG: User success") let credential = FIRFacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString) self.firebaseAuth(credential) } } return _userSignedIn } /** * Authentication through firebase * @parameter credential */ func firebaseAuth(_ credential: FIRAuthCredential){ FIRAuth.auth()?.signIn(with: credential, completion: {(user, error) in if error != nil { print("DEBUG: Failed auth with Firebase \(error)") self._userSignedIn = false }else{ print("DEBUG: Success auth with Firebase") self._userSignedIn = true } }) } /** * Checks if the user is already signed in and sets the variable. */ func signedIn() -> Bool { if ((FIRAuth.auth()?.currentUser) != nil) { print("DEBUG: user is signed in") _userSignedIn = true } return _userSignedIn } /** * Stores the error messages for authentication issues */ var errorMsg: String { get{ return _errorMsg } set(value){ _errorMsg = value } } }
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users