我正在尝试从 UISwitch 将 bool 值保存到 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
。如果 key 不存在false
则返回。
所以很简单
boolValue = UserDefaults.standard.bool(forKey: "sound")
不需要按照其他答案中的建议调用synchronize()
。该框架定期更新用户默认数据库。
关于ios - 使用 UserDefaults 保存和检索 bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44785631/