您好,我的应用程序在我第一次运行时崩溃了。这是我的代码:
let State = save.stringForKey("StateSave")
let City = save.stringForKey("CitySave")
let Vehicle = save.stringForKey("ModelNumberSave")
let ExtensionPeriod = save.stringForKey("ExtensionPeriodChoosed")
let Location = "Location"
if ExtensionPeriod == nil {
let name = ""
var FieldChoosed: Void = save.setObject(name, forKey: "ExtensionPeriodChoosed")
save.synchronize()
}
save.synchronize()
var DetailNames = ["\(State!)","\(City!)","\(Location)","\(Vehicle!)","\(ExtensionPeriod!)"]
我在这一行得到了一个nil
:
var DetailNames = ["(State!)","(City!)","(Location)","(Vehicle!)","(ExtensionPeriod!)"]
事实上 ExtensionPeriod
是 nil
。但是我不明白为什么... ExtensionPeriod
是nil
,但是用我写的代码,ExtensionPeriod
会像""所以它是不是 nil
。请帮助我。
最佳答案
stringForKey
在没有保存值时返回 nil
。
您需要给您的值一个默认值。最简单的方法是使用 ??
运算符,将 nil
替换为另一个值:
let State = save.stringForKey("StateSave") ?? "-"
一些一般性建议:你需要停止使用 !
这么多。通常当某些东西返回 nil
时,这是有充分理由的——它可能是 nil
。当你用 !
解开它时,你的程序会崩溃(关于原因的有用信息不多)。同样,如果您将值与 nil
进行比较,这通常是一个不好的迹象。
相反,看看 this list一些替代品的可选处理技术。
关于Swift NSUserDefaults 第一次为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31252369/