ios - 使用 UserDefaults 保存和检索 bool

标签 ios swift nsuserdefaults

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

相关文章:

ios - 我们可以使用 Facebook SDK 将文档目录视频上传到 Facebook 吗?

ios - 在格式字符串之外使用 NSPredicate 的 SELF

iphone - NSUserDefaults 到 Apple Watch

macos - swift 将 NSData 解压回 NSColor

ios - 为什么我的应用程序不显示小数点,即使我知道我使用的是浮点值

iOS:如何在应用程序中存储用户名/密码?

ios - 如何在我的 viewController 中访问我的自定义 UITableViewCell 的方法

ios - 为什么 UITableView 的内容大小会变化

ios - requestImageForAsset 始终返回 nil - 即使在检查 nil 后也是如此