In this piece of code, when the iteration position reach 13 out of an array with 20 elements, it crashes with the index out of range error.
let counterHeaders = headers.count
for value in 0..<(counterHeaders){
if headers[value] == "" {
headers.remove(at: value)
}
}
Note: counterHeaders variable was created to check how many values was in headers array
CodePudding user response:
You just need to iterate your indices in reverse order when removing items in your collection.
for value in headers.indices.reversed() {
if headers[value] == "" {
headers.remove(at: value)
}
}
Note also there is a mutating method that accepts a predicate called removeAll(where:):
headers.removeAll(where: \.isEmpty)
