簡體   English   中英

iOS Swift:致命錯誤:索引超出范圍

[英]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 當你從刪除的項目arr2index並不代表在正確的位置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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM