Swift NSUserDefaults第一次没有

mar*_*tus 3 nsuserdefaults swift

嗨我的应用程序第一次运行时崩溃了.这是我的代码:

 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!)"]
Run Code Online (Sandbox Code Playgroud)

我得到了nil这条线:

var DetailNames = ["(State!)","(City!)","(Location)","(Vehicle!)","(ExtensionPeriod!)"]

实际上ExtensionPeriod是nil.但我不明白为什么...... ExtensionPeriod是nil,但是我写的代码ExtensionPeriod会像""所以不是nil.请帮我.

Air*_*ity 8

stringForKeynil在没有保存值的情况下返回.

您需要为您的值提供默认值.最简单的方法是使用??运算符替换nil另一个值:

let State = save.stringForKey("StateSave") ?? "-"
Run Code Online (Sandbox Code Playgroud)

一些一般建议:你需要停止使用!这么多.通常当某些东西返回时nil,这是有充分理由的 - 它可能是nil.当您打开它时!,您的程序将崩溃(没有太多有用的信息,为什么).同样,如果你要比较价值,通常也是一个不好的迹象nil.

相反,请查看一些替代方案的可选处理技术列表.