这是我的代码
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()
,但它没有工作:\
答案 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"
作为一种风格说明,您的实例变量应以小写字母开头。只有类型名称应以大写字母开头。