在特定时间每天重置某些值

时间:2016-12-07 18:52:52

标签: ios swift swift3 nsdate

在我的应用程序中,我有一系列待办事项。并且每天在某个时间,让我们说下午13点,必须修改待办事项的数组。 我每天可以用什么样的功能来触发这个事件?

1 个答案:

答案 0 :(得分:2)

当应用程序位于前台时,您可以将计时器设置为在特定时间阈值通过时触发。 如果应用程序在时间过后处于后台,您可以检查下一次启动应用程序(如果阈值已经过去),然后在那时进行修改。

例如,要添加计时器,请在AppDelegate中添加:

    private var myTimer: Timer? 

func applicationWillResignActive(_ application: UIApplication) {
    myTimer?.invalidate()
}

func applicationDidBecomeActive(_ application: UIApplication) {
    //Scheduling for 1 PM (13:00)
    var dateComponents = Calendar.current.dateComponents([.minute, .hour, .month, .day, .year], from: Date())
    dateComponents.hour = 13
    dateComponents.minute = 00
    dateComponents.timeZone = TimeZone.current

    if let timerDate = Calendar.current.date(from: dateComponents) {
        myTimer = Timer(fireAt: timerDate, interval: 0, target: self, selector: #selector(timerFired), userInfo: nil, repeats: false)
    }

    if let myTimer = myTimer {
        RunLoop.current.add(myTimer, forMode: RunLoopMode.commonModes)
    }
}

func timerFired() {
   //Do you update here
}

您可以在applicationDidBecomeActive方法中添加额外的检查,以检查您的修改是否已在当天完成,以防在应用处于后台或处于非活动状态时超过阈值。