如何将NSTimer与内部时钟一起使用?

时间:2016-02-18 15:43:51

标签: ios swift

我已经尝试过研究这个问题,我必须在错误的地方找错误或写错,但我的问题是:

如何在iOS系统的内部时钟中使用NSTimer功能?我想使用一个即使应用程序关闭也能正常工作的计时器。

例如:设置一个计时器,每秒增加1分。计时器运行5个小时,用户关闭iPhone上的应用程序。我该如何制作,以便当用户在6小时内打开应用程序,任务完成,或者如果他们在2小时内打开,计数器显示剩余3小时?

如果这不能在Swift 2中完成,但是服务器端任务或类似任务,任何指导都非常感谢,因为我似乎无法弄清楚如何处理这个问题。

2 个答案:

答案 0 :(得分:4)

您正在接近此问题。您不需要NSTimer或类似内容。不需要在服务器端做任何事情(下面有警告)。

当应用关闭时,记录正在运行的任务等,以及时间。当应用程序再次打开时,检查当前时间,并处理这些时间之间发生的任何更改,如果它是每秒1点,计算已经过去的秒数并添加那么多点等。

与服务器的警告:根据您正在做的事情,您可能不希望用户能够作弊,即启动任务,关闭应用程序,将设备上的时间提前5小时并重新打开应用程序获得5小时的积分。服务器可用于防止此类事情。使用服务器检查实时,或将任务存储在其上等。

答案 1 :(得分:3)

应用关闭时无法运行代码。

但是你所要求的并不需要运行任何代码。

当你启动计时器时,将开始时间放入NSUserDefaults(作为一个例子:但是一个合适的商店会是一个更好的主意)。您可以在应用程序运行时正常运行计时器,并在应用程序终止时停止计时器。当应用程序再次启动或从后台返回时,您只需要读取计时器开始日期,将其与当前时间进行比较并相应地重新启动计时器。