Swift NSUserDefaults应用程序第一次崩溃

时间:2015-06-19 17:10:57

标签: ios swift nsuserdefaults

每次我安装它时我的应用程序崩溃,但只是第一次..

这是我的代码

 var State = save.stringForKey("StateSave")
    var City = save.stringForKey("CitySave")
    var Vehicle = save.stringForKey("ModelNumberSave")
    var ExtensionPeriod = save.stringForKey("ExtensionPeriodChoosed")
    var Location = "Location"


    if ExtensionPeriod == nil {
        var name = ""
        var FieldChoosed: Void = save.setObject(name, forKey: "ExtensionPeriodChoosed")
        save.synchronize()

    }

    save.synchronize()
    var DetailNames = ["\(State!)","\(City!)","\(Location)","\(Vehicle!)","\(ExtensionPeriod!)"]

崩溃,因为它说ExtensionPeriod是零。所以我认为这是因为if语句中的NSUserDefaults。所以我的第一个想法是将save.synchronize放到var save = NSUserDefaults.standardUserDefaults(),但它没有工作:\

1 个答案:

答案 0 :(得分:2)

你的应用崩溃了,因为在这一行:

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

您正在使用强制解包运算符。在打开它们之前,您需要确保这些值不是nil

来自The Swift Programming Language: The Basics

  

尝试使用!访问不存在的可选值会触发运行时错误。在使用之前,请务必确保可选项包含非零值!强行解开它的价值。

您可以使用nil合并运算符提供默认值:

var State = save.stringForKey("StateSave") ?? "Texas"
var City = save.stringForKey("CitySave") ?? "El Paso"

作为一种风格说明,您的实例变量应以小写字母开头。只有类型名称应以大写字母开头。