[swift-users] Class Variable delayed stored

jason bronson jasonbronson at gmail.com
Mon Oct 3 17:46:49 CDT 2016


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

        }

    }





}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20161003/afdb00c4/attachment.html>


More information about the swift-users mailing list