[英]iOS Swift : fatal error: Index out of range
我正在嘗試刪除索引處的對象,但出現錯誤。 這是我的代碼:
var arr2 = [3,5,6]
let arr3 = arr2
for (index, element) in arr3.enumerated() {
print("III \(index)")
arr2.remove(at: index)
}
日志 :
III 0
III 1
III 2
fatal error: Index out of range
請讓我知道我在做什么錯。
您的index
值基於arr3
。 當你從刪除的項目arr2
該index
並不代表在正確的位置arr2
。
一種解決方案是反向迭代arr3
。
for (index, element) in arr3.enumerated().reversed() {
這樣可以使其余索引與迭代繼續相同。
當您執行for循環時,您會獲得要刪除的索引值。因此請檢查以下輸出(我使您的代碼有點不容易理解)-:
import UIKit
var arr2 = [3,5,6]
let arr3 = arr2
for (index, element) in arr3.enumerated() {
print("III \(index)")
arr2.remove(at: index)
}
第一次迭代:
index = 0 and array2=[5, 6] after removing index . Now remaining index you have is [0,1].
第二次迭代:
index = 1 and array2=[5] after removing value at 1 . Now remaining index you have is [0].
第三次迭代:
index = 2 and array2=[5] what to remove at 2?? . Ok let me error out.
現在以相反的順序執行,您將獲得正確的索引。 這樣就可以了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.