使用userDefaults时意外发现nil

时间:2014-12-09 15:01:20

标签: ios swift

我为按钮添加@IBAction:

  @IBAction func addThemeAction(sender: AnyObject) {

        var userDefaults:NSUserDefaults=NSUserDefaults.standardUserDefaults()
        var itemList:NSMutableArray!=userDefaults.objectForKey("itemList") as NSMutableArray}

当我按下按钮时,我会收到致命错误:在展开“可选”值时意外发现nil。

2 个答案:

答案 0 :(得分:0)

一:你永远不能保证你的用户默认值中存在某个键,所以这是一个等待发生的崩溃。二:我不认为你从用户默认值中读取的字典是可变的。

答案 1 :(得分:0)

itemList中的密钥NSUserDefaults没有对象。而不是用!强行打开它,检查可选项是nil并有条件地解包它:

let userDefaults = NSUserDefaults.standardUserDefaults()

var itemList = userDefaults.objectForKey("itemList") as? [AnyObject]

if let itemList = itemList {
    // itemList is not nil, use it here
} else {
    // itemList has never been set, perhaps use some default
}

此外,userDefaults不一定是var

如果您知道类型(例如[AnyObject]),则可以将[String]更改为其他内容。