将可选布尔值存储在NSUserDefaults中

时间:2019-12-19 08:33:18

标签: swift nsuserdefaults

我正在尝试在所有三个状态都有意义的bool中存储可选的NSUserDefaults

  • nil->尚未设置
  • true / false->已明确设置为此值

目前看来,如果您从bool中检索NSUserDefaults,如果尚未设置,那么它将返回false,在以上情况下将不起作用提到的用例。

我不想使用enum,因为它对于我要实现的目标似乎有些过分。

我这里缺少什么吗?

2 个答案:

答案 0 :(得分:4)

您可以只从UserDefaults中获取值,然后尝试将其转换为Bool。如果键没有值,则为零。

let myBool = UserDefaults.standard.object(forKey: "BoolKey") as? Bool

let myBool = UserDefaults.standard.value(forKey: "BoolKey") as? Bool

myBool = nil两种情况

感谢user28434的加入

答案 1 :(得分:2)

Bool –以及Int中的DoubleUserDefaults –被认为是非可选的,如果密钥确实执行,则所有专用的getter都会返回0/false不存在。

一种解决方法是先用nil检查object(forKey或保存一个字符串并实现一个计算属性来映射类型。

实际上未设置 false 真的有区别吗?

相关问题