2016-07-25 5 views
-5

Я продолжаю получать индекс за пределами диапазона. Я пытаюсь пройти через массив и вернуть значение.Неустранимая ошибка: индекс вне диапазона (swift 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, и попытайтесь получить доступ к значениям с индексами, начинающимися с 1. В этом примере это приведет к попытке получить доступ к «arrayVariable [2]», который пройдет мимо конца массива, вызывая сообщение «индекс за пределами диапазона».

Проверьте свои значения, чтобы убедиться, что вы не проходите мимо конца массива.

Смежные вопросы