Skip to main content
 首页 » 数据库

ios之如果 NSUserDefaults 返回 nil,应用程序将崩溃

2024年01月01日65del

我有一种情况,NSUserDefaults 内存中的键值应在 Storyboard中的预览中显示(恢复),但它们仅存储(保存)在 View 之后的下一个 View Controller 中他们将被恢复。如果没有存储任何内容(例如第一次运行应用程序时),当我尝试使用涉及的存储键运行 View 时,应用程序崩溃并出现如下错误。

fatal error: unexpectedly found nil while unwrapping an Optional value

此外,NSUserDefaults 是此预览中 switch 语句的一部分,如下所示。无论如何告诉系统,如果 key 的存储为零,请显示 0。我认为这是 Swift 的细节,但不清楚在这种情况下如何语法。感谢帮助。

var dummy: DummyTest! = nil 
switch self.lessonNumber { 
case 1: 
    NSUserDefaults.standardUserDefaults().setObject(self.score, forKey: "storedDummyEssentialsPoints") 
case 2: 
    NSUserDefaults.standardUserDefaults().setObject(self.score, forKey: "storedDummyFoodPoints") 
case 3: 
    NSUserDefaults.standardUserDefaults().setObject(self.score, forKey: "storedDummyNumbersPoints") 

...

请您参考如下方法:

检查 NSUserDefaults 值是否包含任何值。如果没有,则将值设置为:

var str: AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("storedDummyEssentialsPoints") 
if (str == nil ) 
{ 
    NSUserDefaults.standardUserDefaults().setObject(self.score, forKey:  "storedDummyEssentialsPoints") 
}