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

标签 swift nsdate nscalendar

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

    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

关于swift - 如何在每天开始时重置变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38576229/

相关文章:

linux - 涉及 Swift 3.0.2 的重定向 URL 的问题

ios - 如何在NSPredicate中使用NSDate和NSString从Core Data中获取数据?

ios - 如何从日期数组中获取最接近当前时间的时间? iOS, swift 3

swift - 'String' 不可转换为 'Int'

objective-c - iPhone NSDate 例如。下周五

ios - 无法在 NSDate 类别的初始化方法中初始化静态日历

swift - 倒数计时器将不起作用,因为它不接受本地功能

swift - 如何使用 Swift Charts 创建每天 1 个单位而不是每个数据点 1 个单位的 x 轴?

ios - 这个日期谓词应该工作吗?

ios - MSAL 从 iOS Swift 示例返回错误 token