当应用程序第一次启动时,NSUserDefaults键初始化

时间:2015-05-01 09:46:43

标签: ios swift crash initialization nsuserdefaults

如果我是第一次启动应用,则private static final String filename = "c:/myvideo.mp4"; IContainer container = IContainer.make(); int result = container.open(filename, IContainer.Type.READ, null); long duration = container.getDuration(); long fileSize = container.getFileSize(); 的布尔键为NSUserDefaults,当应用程序在nil中尝试设置状态时应用程序崩溃 - 声明。

我尝试按如下方式初始化if中的密钥,但密钥似乎保持未定义:

viewDidLoad()

可以通过第二个视图上的开关更改fasterDemo键。故事板中的视图由let defaults = NSUserDefaults.standardUserDefaults() if (defaults.objectForKey("fasterDemo") != nil) { defaults.setBool(true, forKey: "fasterDemo") } 中的两个类控制。 另外我尝试将状态作为计时器参数读出的代码。

ViewController.swift

我在Xcode方面不是那么有经验(不是说:我是初学者)。 感谢您的支持!

2 个答案:

答案 0 :(得分:2)

试试这个,

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

答案 1 :(得分:1)

您的逻辑测试!= nil是错误的方法 - 如果==没有您想要设置默认值。

无论如何,你应该做的是使用registerDefaults:在应用启动时设置一个完整的默认值字典。如果值已经设置为显式,那么它们将不会更新,如果它们不是,则注册的默认值是应用程序要使用的瞬态(未保存/同步)设置。