[英]App is crashing if NSUserDefaults returns nil
I have a situation where key values from NSUserDefaults
memory shall be displayed(restored) on pre-view in a storyboard but they are stored(saved) only in the next view controller following the view where they shall be restored. 我有一种情况,
NSUserDefaults
内存中的键值应在故事板中的预览中显示(恢复),但它们仅存储(保存)在视图之后的视图中。 In case nothing is stored (such as when the app is run for the first time), the app crashes with error as follows when i try to run view with the store key involved. 如果没有存储任何内容(例如第一次运行应用程序时),当我尝试使用涉及的商店密钥运行视图时,应用程序崩溃并出现如下错误。
fatal error: unexpectedly found nil while unwrapping an Optional value
致命错误:在展开Optional值时意外发现nil
Further, the NSUserDefaults are part of switch statement on this pre-view as follows. 此外,NSUserDefaults是此预览视图中switch语句的一部分,如下所示。 Is there anyway to tell system that if store of the key is nil, please display 0. I think it is specifics of Swift, but not clear how to syntax it in this situation.
无论如何告诉系统如果密钥的存储是零,请显示0.我认为它是Swift的细节,但在这种情况下不清楚如何语法。 Appreciate help.
感谢帮助。
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")
... ...
Check whether NSUserDefaults value contain any value or not.If not, then set value as: 检查NSUserDefaults值是否包含任何值。如果不是,则将value设置为:
var str: AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("storedDummyEssentialsPoints")
if (str == nil )
{
NSUserDefaults.standardUserDefaults().setObject(self.score, forKey: "storedDummyEssentialsPoints")
}
Use if let
will be able to check whether your object is nil. if let
将能够检查您的对象是否为零。
if let score: AnyObject = NSUserDefaults.standardUserDefaults().objectForKey("storedDummyEssentialsPoints") {
println("\(score)")
}
// is nil
else {
NSUserDefaults.standardUserDefaults().setObject(self.score, forKey: "storedDummyEssentialsPoints")
NSUserDefaults.standardUserDefaults().synchronize()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.