我有一个调查表,仅当用户每次启动该应用程序时仍然没有回答调查表时,该调查表才会出现。但是,即使我已经回答了调查,它仍然会出现。这是我的做法
//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
答案 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()