我已经为函数编写了以下代码,但是延迟后我无法执行迭代。 我想要有延迟的迭代,例如,当循环完成执行直到i = 2之后,当i == 3时,这应该在延迟之后执行。 请指导我解决这个问题。
func allCellsAttempted() -> Bool {
var allCellsAttempted = true
var count = 0
if !oldVersionTriggered {
count = micSources.count
}
else {
count = olderVersionMicSources.count
}
print("Total Mics : \(count)")
for i in 0..<count {
if let cell = micTestFaliureTableView.cellForRow(at: IndexPath(row: i, section: 0)) as? MicFaliureTableViewCell {
if !cell.micFaliureTestview.attempted {
allCellsAttempted = false
break
}
}
}
return allCellsAttempted
}
答案 0 :(得分:1)
您可以使用计时器。您需要将完成处理程序闭包传递给函数以访问结果。
我还建议您从基础数据模型而不是从表视图单元格访问信息。
func allCellsAttempted(_ completion: @escaping(_ attempted: Bool)-> Void) -> Void {
var allCellsAttempted = true
var count = 0
var target: Int
if !oldVersionTriggered {
target = micSources.count
}
else {
target = olderVersionMicSources.count
}
print("Total Mics : \(target)")
let _ = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] (timer) in
guard let strongSelf = self else {
timer.invalidate()
return
}
if let cell = strongSelf.micTestFaliureTableView.cellForRow(at: IndexPath(row: count, section: 0)) as? MicFaliureTableViewCell {
if !cell.micFaliureTestview.attempted {
allCellsAttempted = false
}
}
count += 1
if count == target || !allCellsAttempted {
timer.invalidate()
completion(allCellsAttempted)
}
}
}
答案 1 :(得分:0)
尝试使用
DispatchQueue.main.asyncAfter(最后期限:.now()+ 2.0,执行:{})