对于一个 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),计时器就会 无效 因为如果它等于那个,那么它将 失效范围.