NSUserDefault 未保存

NSUserDefault not being saved

我只希望在变量 "genderDefault" 尚未分配时显示警报。

此代码用于保存用户的选择:

func genderAlert()
    {
        let alertController = UIAlertController(title: "Quick Question", message: "What's your gender?", preferredStyle: UIAlertControllerStyle.Alert)
        let okAction = UIAlertAction(title: "Male", style: UIAlertActionStyle.Default) {
        UIAlertAction in
        NSLog("Male Pressed")
            self.genderDefault.setValue("male", forKey: "gender")
        }
        let cancelAction = UIAlertAction(title: "Female", style: UIAlertActionStyle.Default) {
        UIAlertAction in
        NSLog("Female Pressed")
            self.genderDefault.setValue("female", forKey: "gender")
        }
        alertController.addAction(okAction)
        alertController.addAction(cancelAction)
        self.presentViewController(alertController, animated: true, completion: nil)
    }

这是控制警报是否显示的 if 语句:

if(genderDefault != "male" || genderDefault != "female")
        {
            genderAlert()
        }

Swift 3

let genderDefault = UserDefaults.standard
genderDefault.set(value: AnyObject?, forKey: String) // SET
genderDefault.object(forKey: String)                 // GET

Swift 2

let genderDefault = NSUserDefaults.standardUserDefaults()
genderDefault.setObject("female", forKey: "gender")    // SET
if let gender = genderDefault.stringForKey("gender"){  // GET
    if((gender as! String) != "male" || (gender as! String) != "female")
    {
        genderAlert()
    }
}

无论你做什么,你都必须最后设置 userDefaults.synchronize() 以便 userDefaults 应该知道现在它必须保存

let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setValue("female", forKey: "gender")
userDefaults.synchronize() // don't forget this!!!!