如果数组为空,如何防止我的应用崩溃?
var UserVideosInfo = [[String]]()
@IBAction func actionBtn(sender: UIButton) {
userVideoInfo = NSUserDefaults.standardUserDefaults().objectForKey("UserVideos") as! [[String]]
}
如果数组为空userVideosInfo
崩溃说:
致命错误:在解包可选值时意外发现nil
我试过了:
if var userVideoInfoArray:[[String]] = UserVideosInfo {
userVideoInfoArray = NSUserDefaults.standardUserDefaults().objectForKey("UserVideosJSON") as! [[String]]
}
答案 0 :(得分:0)
这个问题似乎与NSUserDefault有关。
尝试使用键" UserVideos"检索对象时,NSUserDefaults可能返回nil。然后将其显式展开为数组,这会导致程序崩溃。
请在继续之前先验证userVideoInfo是否存在。
var UserVideosInfo: [[String]]?
@IBAction func actionBtn(sender: UIButton) {
userVideoInfoOrNil = NSUserDefaults.standardUserDefaults().objectForKey("UserVideos")
if userVideoInfo = userVideoInfoOrNil as! [[String]] {
//Do stuff with userVideoInfo
} else {
//Value is nil
}
}
答案 1 :(得分:0)
您可以通过注册Apple推荐的键/值对来阻止它。
在AppDelegate中尽快添加
let defaults = NSUserDefaults.standardUserDefaults()
let defaultValues = ["UserVideos" : [[String]]()]
defaults.registerDefaults(defaultValues)
好处是UserVideos
永远不会是nil
然后你可以安全地写
userVideoInfoArray = NSUserDefaults.standardUserDefaults().objectForKey("UserVideos") as! [[String]]
请阅读有关在documentation
中注册默认值的部分答案 2 :(得分:-1)
如果我使用应用程序下方的代码,则不会崩溃
if self.Videos.count >0{
Videos = (NSUserDefaults.standardUserDefaults().objectForKey("Videos") as! [[String]])
}