2016-02-08 4 views
5

मैं प्रदाता के रूप में बस Facebook के साथ में Firebase उपयोग करते हुए मेरे प्रवेश-तर्क को लागू कर रहा हूँ के बाद 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 इससे पहले कि मैं पार्स अंतर्निहित उपयोगकर्ता तर्क के साथ सौदा करने के लिए इस्तेमाल कर रहा हूँ, यह बहुत आसान था।

उत्तर

1

मैं सटीक समस्या का सामना कर रहा हूँ और इस लिंक बहुत मदद की: http://totallyswift.com/ios-app-development-part-2/

क्या उसने किया एक सिंगलटन (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! 
} 
संबंधित मुद्दे