使用 userDefaults 时意外发现 nil
Posted
技术标签:
【中文标题】使用 userDefaults 时意外发现 nil【英文标题】:unexpectedly found nil when use userDefaults 【发布时间】:2014-12-09 15:01:19 【问题描述】:我为按钮添加@IBAction:
@IBAction func addThemeAction(sender: AnyObject)
var userDefaults:NSUserDefaults=NSUserDefaults.standardUserDefaults()
var itemList:NSMutableArray!=userDefaults.objectForKey("itemList") as NSMutableArray
当我按下按钮时出现致命错误:在展开可选值时意外发现 nil。
【问题讨论】:
【参考方案1】:您的NSUserDefaults
中的键itemList
没有对象。不要用 !
强制解包,而是检查 optional 是否为 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]
)。
【讨论】:
【参考方案2】:One:您永远无法保证用户默认值中存在某些键,因此这是一个等待发生的崩溃。二:我不认为您从用户默认值中读取的字典是可变的。
【讨论】:
以上是关于使用 userDefaults 时意外发现 nil的主要内容,如果未能解决你的问题,请参考以下文章
value 不是 nil,而是在展开 Optional 值时意外发现 nil