【发布时间】:2015-10-18 13:03:22
【问题描述】:
我设置了一个NSTimer.scheduledTimerWithTimeInterval 方法,该方法每 20 分钟间隔一次。我希望能够找出应用程序进入后台模式时还剩多少时间。如何知道间隔还剩多少时间?
谢谢
【问题讨论】:
标签: swift nstimer nstimeinterval
我设置了一个NSTimer.scheduledTimerWithTimeInterval 方法,该方法每 20 分钟间隔一次。我希望能够找出应用程序进入后台模式时还剩多少时间。如何知道间隔还剩多少时间?
谢谢
【问题讨论】:
标签: swift nstimer nstimeinterval
您可以访问 NSTimer 的 fireDate,它会告诉您计时器何时再次触发。
现在和fireDate 之间的区别是您可以使用NSDate's timeIntervalSinceDate API 计算的间隔。
例如类似:
let fireDate = yourTimer.fireDate
let nowDate = NSDate()
let remainingTimeInterval = nowDate.timeIntervalSinceDate(fireDate)
【讨论】:
yourTimer.fireDate.timeIntervalSinceNow.
当使用@Michael Dautermann 的解决方案和普通的Swift 类型Timer 和Date 我注意到,他的解决方案会给你一个负值,例如:
let fireDate = yourTimer.fireDate
let nowDate = Date()
let remainingTimeInterval = nowDate.timeIntervalSinceDate(fireDate)
//above value is negative e.g. when the timers interval was 2 sec. and you
//check it after 0.5 secs this was -1,5 sec.
当您在 Timer.scheduledTimer(timeInterval:,target:,selector:,userInfo:,repeats:) 函数中插入负值时,它会导致计时器设置为 0.1 毫秒,正如 Documentation of the Timer 提到的那样。
所以在我的情况下,我不得不使用 nowDate.timeIntervalSinceDate(fireDate) 结果的负值:-nowDate.timeIntervalSinceDate(fireDate)
【讨论】: