2009-10-19 62 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的),你希望它過期,並保存在您的默認值。在重新啓動時,與該日期進行比較,以確定它是否已過期,或者是否需要設置計時器以捕獲將來的過期時間。

相關問題