如果我是第一次启动应用,则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方面不是那么有经验(不是说:我是初学者)。 感谢您的支持!
答案 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:
在应用启动时设置一个完整的默认值字典。如果值已经设置为显式,那么它们将不会更新,如果它们不是,则注册的默认值是应用程序要使用的瞬态(未保存/同步)设置。