Swift2 检索避风港的NSUserDefaults';以前没有使用过(Swift)

Swift2 检索避风港的NSUserDefaults';以前没有使用过(Swift),swift2,nsuserdefaults,Swift2,Nsuserdefaults,我在打开我的应用程序时加载了一些NSUserDefaults值,在第一次成功的会话之后,它工作得很好,但问题是它是第一次在新设备中打开的。它试图找到我以前从未填充或声明过的值。我尝试使用以下if条件修复它,但它仍然不起作用: if NSUserDefaults.standardUserDefaults().objectForKey("defaultSessionUserID")! as? String == nil{ 但仍然报告我同样的错误: 致命错误:在展开可选值时意外发现nil 是不是因为

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

if NSUserDefaults.standardUserDefaults().objectForKey("defaultSessionUserID")! as? String == nil{
但仍然报告我同样的错误:

致命错误:在展开可选值时意外发现nil

是不是因为这一行我只检查对象的键,而不是键?有没有办法检查该值是否在创建之前创建

以下是完整的代码:

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
}
您可以注册默认值(例如,在
ApplicationIDFinishLaunching
中)

那你就可以放心地写了

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

考虑到
NSUserDefaults
有专门的方法
stringForKey
boolForKey

哦,是的,我可以使用
检查它,如果让…
谢谢!
let defaultSessionUserID = NSUserDefaults.standardUserDefaults().stringForKey("defaultSessionUserID")!