应用程序首次启动时 NSUserDefaults 键初始化
NSUserDefaults key initialization when app starts for the first time
如果我第一次启动应用程序,NSUserDefaults
的布尔键是 nil
并且应用程序在尝试 if
中的设置状态时崩溃]-陈述。
我尝试按如下方式初始化 viewDidLoad()
中的密钥,但密钥似乎未定义:
let defaults = NSUserDefaults.standardUserDefaults()
if (defaults.objectForKey("fasterDemo") != nil) {
defaults.setBool(true, forKey: "fasterDemo")
}
可以通过切换第二个视图来更改 fasterDemo 键。故事板中的视图由 ViewController.swift
中的两个 类 控制。
附加代码,我在其中尝试读出状态作为计时器的参数。
let demo = defaults.stringForKey("fasterDemo")
var timerSpeed: Double = 1
if (demo! == "1") {
timerSpeed = 0.001
}
else {
timerSpeed = 1
}
timer = NSTimer.scheduledTimerWithTimeInterval(timerSpeed, target: self, selector: Selector("countdownTimer"), userInfo: nil, repeats: true)
我在 Xcode 方面不是很有经验(不是说:我是初学者)。
感谢您的支持!
你的逻辑测试 != nil
是错误的方法 - 如果它是 ==
nil 你想设置默认值。
无论如何,您应该做的是在应用程序启动时使用 registerDefaults:
设置完整的默认值字典。如果这些值已经设置为明确的内容,那么它们将不会更新,如果不是,那么注册的默认值是供应用程序使用的临时(未保存/同步)设置。
试试这个,
let defaults = NSUserDefaults.standardUserDefaults()
if (defaults.objectForKey("fasterDemo")) {//no need to use '==nil'
defaults.setBool(true, forKey: "fasterDemo")
}
并且
let demo = defaults.boolForKey("fasterDemo")
var timerSpeed: Double = 1
if (demo) {//same as 'demo == true'
timerSpeed = 0.001
}
else {
timerSpeed = 1
}
timer = NSTimer.scheduledTimerWithTimeInterval(timerSpeed, target: self, selector: Selector("countdownTimer"), userInfo: nil, repeats: true)
请注意 stringForKey
已替换为 boolForKey
如果我第一次启动应用程序,NSUserDefaults
的布尔键是 nil
并且应用程序在尝试 if
中的设置状态时崩溃]-陈述。
我尝试按如下方式初始化 viewDidLoad()
中的密钥,但密钥似乎未定义:
let defaults = NSUserDefaults.standardUserDefaults()
if (defaults.objectForKey("fasterDemo") != nil) {
defaults.setBool(true, forKey: "fasterDemo")
}
可以通过切换第二个视图来更改 fasterDemo 键。故事板中的视图由 ViewController.swift
中的两个 类 控制。
附加代码,我在其中尝试读出状态作为计时器的参数。
let demo = defaults.stringForKey("fasterDemo")
var timerSpeed: Double = 1
if (demo! == "1") {
timerSpeed = 0.001
}
else {
timerSpeed = 1
}
timer = NSTimer.scheduledTimerWithTimeInterval(timerSpeed, target: self, selector: Selector("countdownTimer"), userInfo: nil, repeats: true)
我在 Xcode 方面不是很有经验(不是说:我是初学者)。 感谢您的支持!
你的逻辑测试 != nil
是错误的方法 - 如果它是 ==
nil 你想设置默认值。
无论如何,您应该做的是在应用程序启动时使用 registerDefaults:
设置完整的默认值字典。如果这些值已经设置为明确的内容,那么它们将不会更新,如果不是,那么注册的默认值是供应用程序使用的临时(未保存/同步)设置。
试试这个,
let defaults = NSUserDefaults.standardUserDefaults()
if (defaults.objectForKey("fasterDemo")) {//no need to use '==nil'
defaults.setBool(true, forKey: "fasterDemo")
}
并且
let demo = defaults.boolForKey("fasterDemo")
var timerSpeed: Double = 1
if (demo) {//same as 'demo == true'
timerSpeed = 0.001
}
else {
timerSpeed = 1
}
timer = NSTimer.scheduledTimerWithTimeInterval(timerSpeed, target: self, selector: Selector("countdownTimer"), userInfo: nil, repeats: true)
请注意 stringForKey
已替换为 boolForKey