2016-07-25 41 views
2

我有一個跟蹤用戶統計信息的變量,我想在每天開始時重置。我怎樣才能做到這一點? 由於應用程序不允許在後臺運行,因此每次應用程序處於活動狀態時似乎都必須執行檢查,但我不知道如何重置該變量,我只有一次。這是我想使用的功能:如何在每天開始時重置變量?

let beginingOfDay = NSCalendar.currentCalendar().startOfDayForDate(NSDate()) 
    func resetCurrentTime(){ 

    // Date comparision to compare current date and begining of the day. 
    let dateComparisionResult:NSComparisonResult = NSDate().compare(beginingOfDay) 

    if dateComparisionResult == NSComparisonResult.OrderedDescending || dateComparisionResult == NSComparisonResult.OrderedSame { 
     // Current date is greater or equal to end date. 
     currentTime = 0 //reset the time tracker 
    } 
} 

我想使用此功能檢查時,應用程序啓動,但問題是,應用程序可以啓動很多時候一天。如果用戶正在使用應用程序,或者當應用程序變爲活動狀態或當天第一次啓動應用程序,我如何在一天開始時只重置一次變量? 謝謝

回答

4

您可以存儲在用戶默認值這個值。

所以流程如下:

  1. 當應用程序啓動或開始活躍您檢查用戶默認值變量的值是否相同,當前日期(例如,25/07/2016),然後什麼都不做。
  2. 如果值不同,則更新當前日期的用戶默認值。

如果應用程序正在運行,並更改日期,您可以通過訂閱該通知更新變量的值: UIApplicationSignificantTimeChangeNotification

+0

我不知道該通知的存在。系統何時發佈? – irkinosor

+0

來自文檔:當時間發生重大變化時發佈,例如,更改爲新的一天(午夜),載體時間更新以及夏令時更改。 – fiks

+0

運營商更新意味着什麼以及如何影響我的時間?是否有更受限制的通知,絕對期限只在午夜開火? – irkinosor

相關問題