检查 NSUserdefaults/UserDefaults 中是否存在布尔键的正确方法是什么

What is the proper way to check if a Boolean key exists in NSUserdefaults/UserDefaults

下面两个示例中哪个最适合检查 boolean 键是否存在于 NSUserdefaults 中?

1- 这可以接受吗?

if NSUserDefaults.standardUserDefaults().boolForKey("myKey"){
   print("Key Does Exist")
}

2- 这是首选方式吗?

if (NSUserDefaults.standardUserDefaults().objectForKey("myKey") != nil) {
     print("Key Does Exist")
}

如果您想验证是否为密钥存储了某些内容,第二个选项就可以了 (Swift 3)。

if (NSUserDefaults.standardUserDefaults().object(forKey: "myKey") != nil) {
     print("Key Does Exist")
}

object(forKey:) documentation 提到如果找不到密钥则返回 nil


但是如果你想验证是否为密钥存储了某些东西,而它实际上是一个 Boolean:这两个版本都不好。

  • 首先 verifies 如果 Boolean 值存在并且实际上是 true
  • 第二个验证对象是否存在,但您不能确定它是 Boolean

检查以下可能性(Swift 3):

if let boolValue = NSUserDefaults.standardUserDefaults().object(forKey: "myKey"), 
  boolValue is Bool {
  // Boolean exists
}

如果您想检查一个值是否存在,您将使用第二种方法。 第一种方法你只是检查值是真还是假 第一种方法是一样的

    let booleanValue = NSUserDefaults.standardUserDefaults().boolForKey("myKey")
    if booleanValue{

    }

但是第二种方法检查值 做你想做的事情的一个好方法是

if let booleanValue = NSUserDefaults.standardUserDefaults().boolForKey("myKey"){
    print(booleanValue)         
}

这将允许您访问布尔值,并将布尔值作为您可以使用的变量提供给您