2009-10-19 55 views
1

我有一个标签,显示倒数计时器。是否可以在用户默认值中保存定时器的状态?

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

想我收于当应用程序被再次启动的标签应该显示0点02分35秒0点05分35秒后3分钟,计时器应该有剩余的倒计时

回答

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"]; 
+0

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/UserDefaults/UserDefaults.html和http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/DatesAndTimes /DatesAndTimes.html可能有助于阅读。 – 2009-10-19 10:40:36

+0

你可以发布样本代码 – 2009-10-19 11:34:19

+0

我给答案添加了一些示例代码。 – 2009-10-19 12:28:14

2

或者你可以只计算日期/时间(NSDate的),你希望它过期,并保存在您的默认值。在重新启动时,与该日期进行比较,以确定它是否已过期,或者是否需要设置计时器以捕获将来的过期时间。

相关问题