如何在每天开始时重置变量?
问题描述:
我有一个跟踪用户统计信息的变量,我想在每天开始时重置。我怎样才能做到这一点? 由于应用程序不允许在后台运行,因此每次应用程序处于活动状态时似乎都必须执行检查,但我不知道如何重置该变量,我只有一次。这是我想使用的功能:如何在每天开始时重置变量?
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
}
}
我想使用此功能检查时,应用程序启动,但问题是,应用程序可以启动很多时候一天。如果用户正在使用应用程序,或者当应用程序变为活动状态或当天第一次启动应用程序,我如何在一天开始时只重置一次变量? 谢谢
答
您可以存储在用户默认值这个值。
所以流程如下:
- 当应用程序启动或开始活跃您检查用户默认值变量的值是否相同,当前日期(例如,25/07/2016),然后什么都不做。
- 如果值不同,则更新当前日期的用户默认值。
如果应用程序正在运行,并更改日期,您可以通过订阅该通知更新变量的值: UIApplicationSignificantTimeChangeNotification
我不知道该通知的存在。系统何时发布? – irkinosor
来自文档:当时间发生重大变化时发布,例如,更改为新的一天(午夜),载体时间更新以及夏令时更改。 – fiks
运营商更新意味着什么以及如何影响我的时间?是否有更受限制的通知,绝对期限只在午夜开火? – irkinosor