Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.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
Ios 每天在特定时间重置特定值_Ios_Swift_Swift3_Nsdate - Fatal编程技术网

Ios 每天在特定时间重置特定值

Ios 每天在特定时间重置特定值,ios,swift,swift3,nsdate,Ios,Swift,Swift3,Nsdate,在我的应用程序中,我有一个待办对象数组。每天在某个特定的时间,比如说13点,待办事项的数组必须被修改。 我每天可以使用什么样的函数触发此事件 当应用程序位于前台时,您可以设置一个计时器,当某个时间阈值过去时触发。 如果应用程序在时间流逝时处于后台,您可以在下次启动应用程序时检查阈值是否已过,然后在该时间进行修改 例如,要添加计时器,请在AppDelegate中添加: private var myTimer: Timer? func applicationWillResignActiv

在我的应用程序中,我有一个待办对象数组。每天在某个特定的时间,比如说13点,待办事项的数组必须被修改。
我每天可以使用什么样的函数触发此事件

当应用程序位于前台时,您可以设置一个计时器,当某个时间阈值过去时触发。 如果应用程序在时间流逝时处于后台,您可以在下次启动应用程序时检查阈值是否已过,然后在该时间进行修改

例如,要添加计时器,请在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
}

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

当应用程序处于前台时,您可以设置一个计时器,当某个时间阈值通过时触发。 如果应用程序在时间流逝时处于后台,您可以在下次启动应用程序时检查阈值是否已过,然后在该时间进行修改

例如,要添加计时器,请在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
}

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

您可以在使用Web服务时在服务器上设置cron作业,但我目前没有使用任何Web服务。即使没有任何互联网连接,我也希望重置这些值。好的!!我不是一名ios开发者,但从事ios使用的Web服务,并且cron作业设置在服务器上,我们可以在服务器上触发任何带有日期时间的事件。您可以在使用Web服务时在服务器上设置cron作业。目前为止,我没有使用任何Web服务。即使没有任何互联网连接,我也希望重置这些值。好的!!我不是一个ios开发者,但我在ios中使用的Web服务上工作,cron作业设置在服务器上,我们可以在服务器上触发任何带有日期时间的事件。事实上,我决定按照你说的那样做。每次在my UserDefault中访问应用程序时,我都会设置一个日期对象。然后,每次重新打开应用程序时,我都会检查新的访问日期是否与我的UserDefault中的最后一个日期相同,并在不同的日期修改我的to do对象。现在一切正常!!事实上,我决定照你说的做。每次在my UserDefault中访问应用程序时,我都会设置一个日期对象。然后,每次重新打开应用程序时,我都会检查新的访问日期是否与我的UserDefault中的最后一个日期相同,并在不同的日期修改我的to do对象。现在一切正常!!