Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/google-chrome-extension/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何在每天开始时重置变量?_Swift_Nsdate_Nscalendar - Fatal编程技术网

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

Swift 如何在每天开始时重置变量?,swift,nsdate,nscalendar,Swift,Nsdate,Nscalendar,我有一个变量,用于跟踪我希望在每天开始时重置的用户统计信息。我该怎么做? 由于应用程序不允许在后台运行,因此每次应用程序处于活动状态时,我似乎都必须进行检查,但我不知道如何重置只有一次的变量。这是我想要使用的函数: let beginingOfDay = NSCalendar.currentCalendar().startOfDayForDate(NSDate()) func resetCurrentTime(){ // Date comparision to comp

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

    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
    }
}
我想使用这个功能来检查应用程序何时启动,但问题是应用程序一天可以启动很多次。如果用户正在使用应用程序,或者当应用程序处于活动状态或当天首次启动时,如何在一天开始时仅重置一次变量?
谢谢

您可以将此值存储在用户默认值中

因此,流程如下所示:

  • 当应用程序启动或激活时,您检查用户默认值中的变量值是否与当天相同(例如,2016年7月25日),然后不执行任何操作
  • 如果值不同,则使用当前日期更新用户默认值中的值
  • 如果应用程序正在运行且日期已更改,您可以通过订阅此通知来更新变量的值:
    ui应用程序重要时间更改通知

    我不知道通知存在。系统何时过账?来自文档:在时间发生重大变化时过账,例如,更改到新的一天(午夜)、承运人时间更新、更改到夏令时或从夏令时开始。承运人更新意味着什么以及将如何影响我的时间?是否有一个更严格的通知,仅在午夜发出的绝对值?如果通知的原因不是午夜更改,这并不重要。在任何情况下,您都将运行代码,如果日期相同,它将不会更新用户默认值中的值。您好,您介意为此过程提供一个代码示例吗?