如何删除数组中的项目?

我正在使用Swift进行编码,并且混淆了一个问题。 当我在数组的枚举期间尝试从数组中删除一个项时,我遇到了索引超出范围错误

这是我的错误代码:

var array :[Int] = [0,1,2,3,4,5] for (index, number) in array.enumerate() { if array[index] == 2 { array.removeAtIndex(index) // Fatal error: Index out of range } } 

这是否意味着在每个for循环期间都不会调用array.enumerate()?

我必须改变我的代码:

  for number in array { if number == 2 || number == 5 { array.removeAtIndex(array.indexOf(number)!) } } 

要么

 var index = 0 repeat { if array[index] == 2 || array[index] == 4 { array.removeAtIndex(index) } index += 1 } while(index < array.count) 

您在枚举相同的数组时同时删除项目。 请改用filter:

 var array: [Int] = [0,1,2,3,4,5] array = array.filter{$0 != 2} 

或者,对于多个值,请使用Set

 let unwantedValues: Set = [2, 4, 5] array = array.filter{!unwantedValues.contains($0)} 

同一行:

 array = array.filter{!Set([2, 4, 5]).contains($0)}