我有一個設定定時器的函式,我怎樣才能在每個(1,2,3和4=1,5=2,6=3)for回圈中每3次執行一個動作,仍然是6次或更多呢?
func duration(interval: Double,rep:Int){
let queue = DispatchQueue.main
let timer = DispatchSource.makeTimerSource(queue: queue)。
var num = 0
for i in 0.../span>12{
if (i%3 == 0) {
執行一些操作
num
}else if (i%2 == 0){ 執行東西 num
執行一些操作
num
}else{
執行某些操作
num
}
if num == 12{
定時器.取消()
}
}
}```
uj5u.com熱心網友回復:
SwiftUI的方法是一個Timer發布器。
示例:
struct ContentView。View {
@State private var number = 0
@State private var multiple: Int?
private let startDate = Date()
private let timer = Timer.publish(every: 1, on: .main, in: .common) .autoconnect()
var body。some View {
VStack {
Text("Number: (number)")
Text("Multiple: (multiple != nil ? String(multiple!) : "no")")
}
.onReceive(timer) { date in
let interval = Int(date.timeIntervalSince(startDate) )
print(interval)
數字 = 間隔時間
if interval.isMultiple(of: 3) {
//3的倍數。
multiple = 3 的倍數。
} else if interval.isMultiple(of: 2) {
//2的倍數(小心-6將被忽略,因為它已經是3的倍數)。
multiple = 2 的倍數。
} else {
//既不是2或3的倍數 {
multiple = nil
}
if interval == 12 {
Timer.upstream.connect().cancel()
}
}
}
}
結果:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/323141.html
標籤:
上一篇:使用發布的var來觀察帶有Combine的Publisher中的開關情況
下一篇:周的范圍與周歲一樣迅速
