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

fs_*_*gre 3 boolean nsuserdefaults swift

以下两个示例中的哪一个最适合检查boolean密钥是否存在NSUserdefaults

1-这可以接受吗?

if NSUserDefaults.standardUserDefaults().boolForKey("myKey"){
   print("Key Does Exist")
}
Run Code Online (Sandbox Code Playgroud)

2-这是首选方式吗?

if (NSUserDefaults.standardUserDefaults().objectForKey("myKey") != nil) {
     print("Key Does Exist")
}
Run Code Online (Sandbox Code Playgroud)

Dmi*_*tin 5

如果要验证是否存储了某个键的某些内容,则第二个选项很好(Swift 3).

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

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


但是如果你想验证一个密钥是否存储了什么,它实际上是Boolean:两个版本都没问题.

  • 首先验证如果Boolean值存在,实际上是true.
  • 第二个验证对象是否存在,但您无法确定它是否为a Boolean.

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

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