对于一个 int 值数组,如何创建一个从数组中的每个 int 值开始倒计时的计时器? (Swift)
With an array of int values, how to create a timer that counts down from each int value in the array? (Swift)
数组中的值由用户放置,因此数组中可以有任意数量的值。如果数组中的第一个值为 5,则屏幕上的计时器从 5 秒计数到 0 秒,如果第二个值为 10,则计时器自动开始从 10 到 0 倒计时,如果是最后一个则停止数组中的值或如果有更多则继续。
解决这个问题时,你需要确定问题是你如何更改计时器应该从哪个索引开始计时。
import Foundation
var times = [10,20]
var index = 0
var time = times[index]
let timer = Timer.scheduledTimer(withTimeInterval: -1, repeats: true, block: { timer in
print(time)
time -= 1
//reset only when it becomes -1 so you can see 0
if time == -1 {
if index < times.count - 1{
//increase the index by 1; which is the next timing set
index += 1
time = times[index]
} else {
//invalidate if the index matches the number of count
timer.invalidate()
}
}
})
timer.fire()
此清单显示了如何通过 每次索引 达到 -1 时将索引增加 1 来解决此问题(以便它可以显示 0) 并将时间设置为该索引中的任何时间。
一旦索引等于 (times.count - 1)
,计时器就会 无效 因为如果它等于那个,那么它将 失效范围.
数组中的值由用户放置,因此数组中可以有任意数量的值。如果数组中的第一个值为 5,则屏幕上的计时器从 5 秒计数到 0 秒,如果第二个值为 10,则计时器自动开始从 10 到 0 倒计时,如果是最后一个则停止数组中的值或如果有更多则继续。
解决这个问题时,你需要确定问题是你如何更改计时器应该从哪个索引开始计时。
import Foundation
var times = [10,20]
var index = 0
var time = times[index]
let timer = Timer.scheduledTimer(withTimeInterval: -1, repeats: true, block: { timer in
print(time)
time -= 1
//reset only when it becomes -1 so you can see 0
if time == -1 {
if index < times.count - 1{
//increase the index by 1; which is the next timing set
index += 1
time = times[index]
} else {
//invalidate if the index matches the number of count
timer.invalidate()
}
}
})
timer.fire()
此清单显示了如何通过 每次索引 达到 -1 时将索引增加 1 来解决此问题(以便它可以显示 0) 并将时间设置为该索引中的任何时间。
一旦索引等于 (times.count - 1)
,计时器就会 无效 因为如果它等于那个,那么它将 失效范围.