我正在尝试保存一个bool从 UISwitch 到 UserDefaults 的值,并在另一个视图中检索它。但是,我尝试遵循多个教程和堆栈答案,但似乎都不起作用。
这就是我保存它的方式:
class SettingsViewController: UITableViewController {
@IBOutlet weak var soundSwitchOutlet: UISwitch!
@IBAction func soundSwitch(_ sender: UISwitch) {
UserDefaults.standard.set(soundSwitchOutlet.isOn, forKey: "sound")
}
这就是我尝试在另一个视图中检索它的方式:
if let savedValue = UserDefaults.standard.bool(forKey: "sound") {
boolValue = savedValue
}
//this is inside viewDidLoad and "boolValue" was declared outside viewDidLoad//
由于某种原因,这段代码给了我错误,并且我尝试过的所有方法都不起作用。如何将布尔值保存到 UserDefaults 并在另一个视图中检索它?
编辑:我想我修复了第一部分。但是,我检索布尔值的方式似乎完全错误。另外:没有其他 stackExchange 答案可以回答我的问题,至少不能快速回答。
正如Leo在评论中提到的bool(forKey
返回一个非可选的Bool
。如果密钥不存在false
被返回。
所以这很简单
boolValue = UserDefaults.standard.bool(forKey: "sound")
Calling synchronize()
正如其他答案中所建议的那样,不需要。该框架定期更新用户默认数据库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)