将可选布尔值存储在NSUserDefaults中

问题描述 投票:0回答:2

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

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

目前,如果您从bool中检索到NSUserDefaults,如果尚未设置,那么它将返回false,在上述用例中将不起作用。

我不想使用enum,因为这似乎对我要实现的目标来说是过高的。

这里有什么我想念的吗?

swift nsuserdefaults
2个回答
0
投票

Bool –以及Int中的DoubleUserDefaults –被视为非可选,如果键不存在,则所有专用的吸气剂均返回0/false

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

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


0
投票

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

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

myBool = nil

© www.soinside.com 2019 - 2024. All rights reserved.