我正在尝试将 bool 值从 UISwitch 保存到 UserDefaults,并在另一个 View 中检索它。但是,我已经尝试遵循多个教程和堆栈答案,但似乎都没有用。
我是这样保存的:
class SettingsViewController: UITableViewController {
@IBOutlet weak var soundSwitchOutlet: UISwitch!
@IBAction func soundSwitch(_ sender: UISwitch) {
UserDefaults.standard.set(soundSwitchOutlet.isOn, forKey: "sound")
}
这就是我试图在另一个 View 中检索它的方式:
if let savedValue = UserDefaults.standard.bool(forKey: "sound") {
boolValue = savedValue
}
//this is inside viewDidLoad and "boolValue" was declared outside viewDidLoad//
出于某种原因,这段代码会给我错误,而且我尝试过的所有方法都没有奏效。如何将 bool 值保存到 UserDefaults 并在另一个 View 中检索它?
编辑:我想我修复了第一部分。但是,我检索 bool 值的方式似乎是完全错误的。另外:没有其他 stackExchange 答案能回应我的要求,至少不会很快。
最佳答案
正如 Leo 在评论中提到的,bool(forKey
返回一个非可选的 Bool
。如果键不存在,则返回 false
。
就是这样
boolValue = UserDefaults.standard.bool(forKey: "sound")
不需要按照其他答案中的建议调用 synchronize()
。该框架定期更新用户默认数据库。
关于ios - 使用 UserDefaults 保存和检索 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42478132/