UserDefault没有保存该值

时间:2018-06-20 10:00:39

标签: swift userdefaults

我有一个调查表,仅当用户每次启动该应用程序时仍然没有回答调查表时,该调查表才会出现。但是,即使我已经回答了调查,它仍然会出现。这是我的做法

//Get if questionaire is done
let defaults = UserDefaults.standard
if let questionaire_done = defaults.string(forKey: "questionaire_done") {
    print(questionaire_done) // Some String Value
}else {
    performSegue(withIdentifier: "questionaireSegue", sender: nil)
}

UserDefaults.standard.set("yes", forKey: "questionnaire_done") //set the questionnaire as done

3 个答案:

答案 0 :(得分:1)

将值存储在segue(导航)之前

//Get if questionaire is done
let defaults = UserDefaults.standard
if let questionaire_done = defaults.string(forKey: "questionnaire_done")  {
    print(questionaire_done) // Some String Value
}else {
    defaults.set("yes", forKey: "questionnaire_done") //set the questionnaire as done
    performSegue(withIdentifier: "questionaireSegue", sender: nil)
}

如果您想验证自己的状况,那么您会喜欢

let defaults = UserDefaults.standard
if let questionaire_done = defaults.string(forKey: "questionnaire_done"), questionaire_done == "yes" {
    print(questionaire_done) // Some String Value
}else {
    defaults.set("yes", forKey: "questionnaire_done") //set the questionnaire as done
    performSegue(withIdentifier: "questionaireSegue", sender: nil)
} 

答案 1 :(得分:1)

if let questionaire_done = defaults.string(forKey: "questionaire_done")

具有与

不同的密钥
UserDefaults.standard.set("yes", forKey: "questionnaire_done")

对键进行相同的拼写,或者更好的方法是,对键使用常量字符串。

答案 2 :(得分:0)

是的,键值名称应该始终相同,但还有一点-您应该在执行任何“ UserDefaults”操作后写上它- read write

UserDefaults.standard.synchronize()

示例-

UserDefaults.standard.set("yes", forKey: "questionnaire_done")
UserDefaults.standard.synchronize()