如何在每次迭代后快速中断并继续使用for循环

时间:2018-08-13 07:41:13

标签: ios swift for-loop break

我正在使用以下代码来中断并继续进行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
}

2 个答案:

答案 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()
        }
    }
}