2016-02-08 13 views
5

Ich implementiere meine Login-Logik mit Firebase mit nur Facebook als Anbieter.Bewährte Methode zum Speichern von CurrentUser nach dem Anmelden

Wie kann ich meine CurrentUser nach der Anmeldung speichern, um später persönliche Daten während der App-Erfahrung zu verwenden?

Im Moment verwende ich ein Singleton mit einer Instanz von User. Etwas wie folgt aus:

CurrentUser.swift

class CurrentUser { 

    static let i: CurrentUser = CurrentUser() 

    var cUser: User? 

    private init() { 

    } 

    func setCurrentUser(u: User) { 
     cUser = u 
    } 

    func getCurrentUser() -> User { 
     return cUser! 
    } 

    func clearUser() { 
     cUser = nil 
    } 

    func userIsLogged() -> Bool { 
     return cUser != nil 
    } 

} 

Und ich bin mit, dass Singletons auf diese Weise:

LoginViewController.swift

class LoginViewController: UIViewController { 
    ... 
    func createCurrentUser(authData: FAuthData) { 

     let u = User(uid: authData.uid, displayName: authData.providerData["displayName"] as! String, email: authData.providerData["email"] as! String) 

     u.wrapperFromFacebookData(authData.providerData) 

     ref.childByAppendingPath("users").childByAppendingPath(u.uid).setValue(u.toDict()) 

     CurrentUser.i.setCurrentUser(u) 

    } 
    ... 

} 

ich nicht tun denke, das ist die beste Praxis. Vor Firebase bin ich es gewöhnt, mit der integrierten Benutzerlogik von Parse umzugehen, das war ziemlich einfach.

Antwort

1

Ich bin vor das genaue Problem und diese Verbindung sehr geholfen: http://totallyswift.com/ios-app-development-part-2/

Was er tat, war ein Singleton (current) erstellen, die mit User-Klasse entspricht.

class var currentUser: User 
{ 
    struct Static 
    { 
     static var instance: User? 
    } 

    if Static.instance == nil 
    { 
     if let load: AnyObject = NSUserDefaults.standardUserDefaults().objectForKey(kUserDataKey) 
     { 
      Static.instance = User(data: load as [String: AnyObject]) 
     } 
     else 
     { 
      Static.instance = User() 
     } 
    } 

    return Static.instance! 
} 
Verwandte Themen