2016-07-25 11 views
-5

インデックスから範囲外エラーが発生し続ける。配列をループして値を返そうとしています。致命的なエラー:範囲外のインデックス(迅速なxcode)

override func countNeighbors(grid: [[Character?]], column x: Int, row y: Int) -> Int { 
    var sum = 0 
    for k in 1...2{ 
     for l in 1...2 { 
      sum += getAlive(grid, column: x - 1 + l, row: y - 1 + l) 

     } 
    } 
    return sum - getAlive(grid, column: x, row: y) 
} 
+0

グリッド変数として何が渡されますか? – Scriptable

+0

関数を渡す引数のように、ポストにいくつかの精度を追加する必要があります。例外が発生した行。あるいはもっとコード。 – Aeradriel

答えて

0

ほとんどの場合、おそらく列と行が混乱している可能性があります。あなたは2を入れ替えていないかどうかチェックするべきです。例外はあなたのgetAlive関数から来ているようです。あなたがそれを投稿することができれば、それ以上のことができます。

0

'インデックスの範囲外は、配列の添字が配列の実際のサイズの外にあることを意味します。たとえば、配列に2つの要素がある場合は、 'arrayVariable [0]'と 'arrayVariable [1]'のようになります。

一般的な配列間違いは、配列が0ベースであることを忘れることです。この例では、arrayVariable [2]にアクセスしようとします。これは配列の最後を過ぎて、 'index out of range'メッセージを引き起こします。

値を確認して、配列の最後を過ぎていないことを確認します。

関連する問題