是否有可能保存在用户默认的定时器的状态?(Is it possible to save the st

2019-09-29 13:15发布

我有这我显示倒计时的标签。

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

假设我收于零时05分35秒3分钟后,当应用程序被再次启动的标签上应显示○时02分35秒和计时器应该有剩余倒计时

Answer 1:

是的,只是存储在您的应用被关闭的时间和剩余时间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"];


Answer 2:

或者你可以只计算日期/时间(NSDate的),你希望它过期,并保存在您的默认值。 上重新启动比较针对日期知道它是否已过期,或者如果你需要设置一个计时器,以赶上未来到期。



文章来源: Is it possible to save the state of a timer in the User Defaults?