如何快速解决致命错误:索引超出范围错误?

Ang*_*ila 1 arrays for-loop swift

在这段代码中,当迭代位置达到具有 20 个元素的数组中的 13 时,它会因索引超出范围错误而崩溃。

let counterHeaders = headers.count
for value in 0..<(counterHeaders){
    if headers[value] == "" {
        headers.remove(at: value)
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:创建 counterHeaders 变量是为了检查 headers 数组中有多少个值

Leo*_*bus 5

indices当删除集合中的项目时,您只需要以相反的顺序迭代即可。

for value in headers.indices.reversed() {
    if headers[value] == "" {
        headers.remove(at: value)
    }
}
Run Code Online (Sandbox Code Playgroud)

另请注意,有一个变异方法接受名为 的谓词removeAll(where:)

headers.removeAll(where: \.isEmpty)
Run Code Online (Sandbox Code Playgroud)