为什么 NSUserDefaults 不适用于 Firebase

Why NSUserDefaults does not work with Firebase

我正在使用 Firebase 登录并使用 NSUserdefaults 保存 uid 所以下次可以自动登录。但是不知道为什么不起作用。下面是我的代码:

 // let's say path is the route down to "users" in Firebase  
  @IBAction func loginPressed(sender: AnyObject) {        
    if let email = emailField.text where email != "", let password = passwordField.text where password != "" {            
        FIRAuth.auth()?.signInWithEmail(email, password: password, completion: { (user, err) in                
            if err != nil {                    
                print(err)                    
            } else {                    
            NSUserDefaults.standardUserDefaults().setValue(user!.uid, forKey: "uid")                    
           path.child("\(user!.uid)/category").observeSingleEventOfType(.Value, withBlock: { (snapshot) in

             if let userCategory = snapshot.value as? String {                        
               if userCategory == "seller" {                            
                  self.performSegueWithIdentifier(segueSellerVC, sender: self)                            
                } else  {                            
                    self.performSegueWithIdentifier(segueCustomerVC, sender: self)                            
                    }
                }                    
               })                                        
           }                
       })
    }     
}

Swift 3

节省

UserDefaults.standard.set(FIRAuth.auth()!.currentUser!.uid, forKey: "uid")

UserDefaults.standard.synchronize()

正在检索

let storagePath = UserDefaults.standard.object(forKey: "uid") as? String 

Swift 2

节省

NSUserDefaults.standardUserDefaults().setObject(FIRAuth.auth()!.currentUser!.uid, forKey: "uid")

NSUserDefaults.standardUserDefaults().synchronize()

正在检索

let storagePath = NSUserDefaults.standardUserDefaults().objectforKey("uid") as? String

Swift 3

UserDefaults.standard.setValue(user!.uid, forKey: "uid")