使用UserDefaults保存和检索bool

Gab*_*e12 3 nsuserdefaults ios swift

我正在尝试从UISwitch 将bool值保存到UserDefaults,并在另一个视图中检索它.但是,我尝试过多个教程和堆栈答案,似乎没有工作.

这是我如何保存它:

class SettingsViewController: UITableViewController {

@IBOutlet weak var soundSwitchOutlet: UISwitch!

@IBAction func soundSwitch(_ sender: UISwitch) {

    UserDefaults.standard.set(soundSwitchOutlet.isOn, forKey: "sound")

}
Run Code Online (Sandbox Code Playgroud)

这就是我试图在另一个视图中检索它的方式:

if let savedValue = UserDefaults.standard.bool(forKey: "sound") {
        boolValue = savedValue
    }

//this is inside viewDidLoad and "boolValue" was declared outside viewDidLoad//
Run Code Online (Sandbox Code Playgroud)

出于某种原因,这段代码给了我错误,而且我尝试过的东西都没有.如何将bool保存到UserDefaults并在另一个视图中检索它?

编辑:我想我修复了第一部分.但是,我检索布尔值的方式似乎完全错误.另外:没有其他stackExchange答案回应我的要求,至少不是迅速.

vad*_*ian 16

正如Leo在评论中提到的那样,bool(forKey返回一个非可选的Bool.如果密钥不存在false则返回.

所以很简单

boolValue = UserDefaults.standard.bool(forKey: "sound")
Run Code Online (Sandbox Code Playgroud)

synchronize()不需要按照其他答案中的建议进行呼叫.框架定期更新用户默认数据库.