在我的应用程序中,我有一系列待办事项。并且每天在某个时间,让我们说下午13点,必须修改待办事项的数组。 我每天可以用什么样的功能来触发这个事件?
答案 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
方法中添加额外的检查,以检查您的修改是否已在当天完成,以防在应用处于后台或处于非活动状态时超过阈值。