2016-02-08 8 views
5

私はlogin-logicを実装しています。ログイン後にCurrentUserを保存するベストプラクティス

ログイン後にCurrentUserを保存して、後でアプリの使用中に個人データを使用するにはどうすればよいですか?

現時点では、インスタンスがUserのシングルトンを使用しています。このような何か:

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 
    } 

} 

そして私はシングルトンをこのように使用しています:

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) 

    } 
    ... 

} 

私はしないでくださいこれがベストプラクティスだと思います。 Firebaseの前に、Parseの組み込みユーザーロジックを扱うことになりましたが、それはかなり簡単でした。

答えて

1

私は、正確な問題に直面していますし、このリンクはたくさん助け:http://totallyswift.com/ios-app-development-part-2/

彼が何をしたか、Userクラスに準拠シングルトン(あるCurrentUser)を作成しました。

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! 
} 
関連する問題