如何在每天开始时重置变量?

问题描述:

我有一个跟踪用户统计信息的变量,我想在每天开始时重置。我怎样才能做到这一点? 由于应用程序不允许在后台运行,因此每次应用程序处于活动状态时似乎都必须执行检查,但我不知道如何重置该变量,我只有一次。这是我想使用的功能:如何在每天开始时重置变量?

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 
    } 
} 

我想使用此功能检查时,应用程序启动,但问题是,应用程序可以启动很多时候一天。如果用户正在使用应用程序,或者当应用程序变为活动状态或当天第一次启动应用程序,我如何在一天开始时只重置一次变量? 谢谢

您可以存储在用户默认值这个值。

所以流程如下:

  1. 当应用程序启动或开始活跃您检查用户默认值变量的值是否相同,当前日期(例如,25/07/2016),然后什么都不做。
  2. 如果值不同,则更新当前日期的用户默认值。

如果应用程序正在运行,并更改日期,您可以通过订阅该通知更新变量的值: UIApplicationSignificantTimeChangeNotification

+0

我不知道该通知的存在。系统何时发布? – irkinosor

+0

来自文档:当时间发生重大变化时发布,例如,更改为新的一天(午夜),载体时间更新以及夏令时更改。 – fiks

+0

运营商更新意味着什么以及如何影响我的时间?是否有更受限制的通知,绝对期限只在午夜开火? – irkinosor