2016-08-16 10 views
1

空になるUIViews(セル)を含む配列があります。私は機能が異なる配列をループによって発射されたとき、それは値ですセット:私はラインcellAnimationArray.insert(cell, at: 4)されたら配列に要素を挿入するときに配列インデックスが範囲外になる

cells = [cell0, cell1, cell2, cell3, cell4] 

// Code in function ↓ 

var cellAnimationArray: [NPFCarouselCell] = [] 

for cell in self.cells { 
    if cell.frame == farLeftFrame { 
     cellAnimationArray.insert(cell, at: 0) 
    } else if cell.frame == leftFrame { 
     cellAnimationArray.insert(cell, at: 1) 
    } else if cell.frame == centerFrame { 
     cellAnimationArray.insert(cell, at: 2) 
    } else if cell.frame == rightFrame { 
     cellAnimationArray.insert(cell, at: 3) 
    } else if cell.frame == farRightFrame { 
     cellAnimationArray.insert(cell, at: 4) 
    } else { 
     print("Frame does not exist!") 
     print(cell.frame) 
     return 
} 

、とアプリのクラッシュ:

fatal error: Array index out of range 

はなぜのうちを取得していますアイテムを配列に挿入するときにインデックスエラーが発生しましたか?

+0

@ tktsubota。私が配列を使用している方法では、どの要素がどこにあるかを知る必要があります。それで私はインサートを使用しています。 –

+2

空の配列にインデックス4で挿入することができます。どのように0 ... 3を埋めるべきかを知っていますか? @AlexanderMomchliov。 – Alexander

+0

。問題は、たとえば、インデックス3が割り当てられていないため、インデックス4が存在しないということです。 –

答えて

3

が有効なインデックスになるのに十分な要素を挿入する前に、insert(cell, at:4)を呼び出すというエラーメッセージが表示されます。これは、self.cellsの項目の順番が0から3までの挿入の前にその行に当たるようなものであることを意味します。しかし、0から3の何かがない限り、4に挿入することはできません。

すでにいくつかの項目が含まれている配列の場合、インデックス4はすでに有効なので、これは避けてください。

関連する問題