我正在使用以下代码来中断并继续进行for循环。我想在每次迭代后中断并继续for循环。例如,当i = 0循环完成迭代并中断循环,然后再次以i = 1继续并完成迭代并中断,然后以i = 2继续迭代。依此类推。
outer: for i in 0..<micSources.count {
if let cell = self.micTestFaliureTableView.cellForRow(at: IndexPath(row: i, section: 0)) as? MicFaliureTableViewCell {
//let micLocation = cell.micFaliureTestview.micLocation
//let indexpath = micTestFaliureTableView.indexPath(for: cell)
if !cell.micFaliureTestview.success {
cell.micFaliureTestview.startRecording()
break outer
}
}
continue outer
}
答案 0 :(得分:0)
如果要在tableView中测试并显示麦克风状态,
建议您在viewController的updateData()
中调用viewDidLoad()
函数。
var microphoneStatus: [Bool]?
func viewDidLoad() {
super.viewDidLoad()
// test the microphone status only once,
// when the view is loaded for the first time.
updateData()
}
private func updateData() {
for microphoneSource in micSources {
let isMicrophoneRunning = microphoneSource.success
microphoneStatus.append(isMicrophoneRunning)
if !isMicrophoneRunning { startMicrophone }
}
}
然后,使用tableview数据源委托来提供tableview。 并使用麦克风状态数组显示其状态。
您甚至可以创建一个struct
而不是[Bool]
的数组,并且该结构将包含输入的名称,数字和状态。
然后,您可以使用此结构数组简单地在tableView中显示数据。
您的问题似乎是另一个问题:
当我在循环中使用它时... ...!cell.micFaliureTestview.success {cell.micFaliureTestview.startRecording()}所有失败的麦克风启动 在一起,但我想按顺序播放-Umair Shams
我建议查看startRecording()
函数签名,看看是否有仅在startRecording完成后才调用的处理程序。
然后,您可以正确地链接startRecording()
调用。
答案 1 :(得分:0)
for i in 0..<micSources.count {
// use custom class for your data array and control over that list, then reload/update your tableview.
if let cell = self.micTestFaliureTableView.cellForRow(at: IndexPath(row: i, section: 0)) as? MicFaliureTableViewCell {
if !cell.micFaliureTestview.success {
cell.micFaliureTestview.startRecording()
}
}
}