ios - 使用 UserDefaults 保存和检索 bool 值

标签 ios swift nsuserdefaults

我正在尝试将 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/

相关文章:

ios - 更改主屏幕上显示 "APP NAME is using your location"的蓝色条的文本

ios - 在 collectionview 的部分中以 id 明智的方式显示图像

iphone - 应用程序提交需要每年续订吗?

objective-c - 从 NSUserDefaults 检索数据 - 在一个 View 中有效,但在另一个 View 中失败

ios - 用户可以修改 iOS 应用程序中的 NSUserDefaults 键值吗?

ios - 推送通知,是否可以让推送通知在应用程序打开时也向下滑动?

iOS Swift 不支持的 URL

ios - swift 中的三元运算符这个 "?"符号是什么

ios - 无法理解这个 Swift Controller

swift - 强制解包从 UserDefaults 检索到的可选值而不是使用 guard/if let 安全解包是一种好习惯吗?