检索之前未使用过的 NSUserDefaults (Swift)

Retrieve NSUserDefaults that haven't been used before (Swift)

我在打开我的应用程序时加载了一些 NSUserDefaults 值,在第一次成功会话后它运行良好,但问题是它第一次在新设备中打开。它试图找到我以前从未填充或声明过的值。我尝试使用以下 if 条件修复它,但它仍然无法正常工作:

if NSUserDefaults.standardUserDefaults().objectForKey("defaultSessionUserID")! as? String == nil{

但仍然报告我同样的错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

是否因为在这一行中我只检查对象的密钥而不是密钥?有什么方法可以检查该值是否是之前创建的?

完整代码如下:

if NSUserDefaults.standardUserDefaults().objectForKey("defaultSessionUserID")! as? String == nil{

        NSUserDefaults.standardUserDefaults().setObject("", forKey: "defaultSessionUserID")
        NSUserDefaults.standardUserDefaults().setObject(false, forKey: "KML")
    }
    if NSUserDefaults.standardUserDefaults().objectForKey("KML")! as? Bool == false{
     //Do something   
    }
    else{
     //Do something else
    }}

谢谢

要检查键和值类型,请使用可选绑定

if let defaultSessionUserID = NSUserDefaults.standardUserDefaults().objectForKey("defaultSessionUserID") as? String {
  // key and value exists
}

您可以注册默认值(例如 applicationDidFinishLaunching

let defaults = NSUserDefaults.standardUserDefaults()
let defaultValues = ["defaultSessionUserID" : "", "KML" : false]
defaults.registerDefaults(defaultValues)

那你就可以安心写了

let defaultSessionUserID = NSUserDefaults.standardUserDefaults().stringForKey("defaultSessionUserID")!

考虑 NSUserDefaults 有专用方法 stringForKeyboolForKey