2014-12-09 4 views
0

добавить @IBAction для кнопки:неожиданно обнаружила ноль, когда использование userDefaults

@IBAction func addThemeAction(sender: AnyObject) { 

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

При нажатии кнопки я получаю фатальную ошибку: неожиданно нашел ноль в то время как разворачивание необязательного значения.

ответ

0

В объекте NSUserDefaults нет объекта для ключа itemList. Вместо силы разворачивая его !, проверьте, опционально 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]).

0

Первый: вы никогда не можете гарантировать, что какой-либо ключ присутствует в ваших настройках по умолчанию, так что это может произойти сбой. Два: я не думаю, что словари, которые вы читаете из пользовательских значений по умолчанию, являются изменяемыми.

Смежные вопросы