是否可以在用户默认值中保存计时器的状态?

Rah*_*yas 1 objective-c nsuserdefaults nstimer iphone-sdk-3.0

我有一个标签,我正在显示倒数计时器.

现在,如果我关闭我的应用程序,计时器将关闭,标签的文本也将关闭.我知道我们可以保存标签的文本值.但是,当应用程序再次启动时,我们如何显示正确的倒计时.

假设我在3分钟后关闭00:05:35当应用程序再次启动时,标签应该显示00:02:35并且计时器应该在那里进行剩余的倒计时

Jen*_*ult 8

是的,只需存储关闭应用的时间以及在NSUserDefaults中倒计时的时间.当应用程序再次启动时,您将获得从NSUserDefaults关闭的时间和剩余时间.使用当前时间,可以通过简单的数学计算倒数时剩余的校正时间.

这样的事情可能会成功,当然未经测试:

// save state
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSDate *now = [NSDate date];
double countDown = 45.0; // in seconds, get this from your counter
[userDefaults setObject:now forKey:@"timeAtQuit"];
[userDefaults setDouble:countDown forKey:@"countDown"];
[userDefaults synchronize];


// restore state
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSDate *timeAtQuit = [userDefaults objectForKey:@"timeAtQuit"];
double timeSinceQuit = [timeAtQuit timeIntervalSinceNow];
double countDown = timeSinceQuit + [userDefaults doubleForKey:@"countDown"];
Run Code Online (Sandbox Code Playgroud)