【发布时间】:2016-07-20 09:35:20
【问题描述】:
我正在使用 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)
【问题讨论】:
-
删除索引 2 后您的计数为 5,但您枚举时的索引计数值为 6
-
您要删除多个项目还是单个项目?
-
如果条件匹配,我想删除项目。
-
@Happiehappie,我认为每次 FOR 循环检查新数组(我的意思是删除结果一个。)