indexPath.row выдает исключение - PullRequest
1 голос
/ 02 ноября 2011

Я переключаю источник данных представления таблицы, но indexPath.row выдает мне исключение [index x за пределами]

cell.customLabel.text = [[(_secondTab.selected) ? secondArray : firstArray objectAtIndex:indexPath.row]elementName];

Есть идеи, как это решить?

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Проблема в том, что индекс indexPath.row больше, чем существует в secondArray или firstArray. Чтобы исправить основную причину, вам нужно выяснить, почему элемент отсутствует в ваших массивах. Чтобы убедиться, что он не падает, а просто загружает пустую строку в свойстве text метки, убедитесь, что наибольший индекс в массиве больше или равен indexPath.row:

if (_secondTab.selected) { 
    cell.customLabel.text = (indexPath.row <= ([secondArray count]-1)) ? [[secondArray objectAtIndex:indexPath.row] elementName] : @"";
} else {
    cell.customLabel.text = (indexPath.row <= ([firstArray count]-1)) ? [[firstArray objectAtIndex:indexPath.row] elementName] : @"";
}
1 голос
/ 02 ноября 2011

Это может произойти, когда значение индекса выходит за пределы диапазона.Убедитесь, что secondArray и firstArray имеют одинаковое количество значений.Или же использовать вашу логику, чтобы убедиться, что она выходит за пределы диапазона или нет?

Например, если источником данных является secondArray, ваш indexPath.row равен 4

firstArray имеет 3 значения, а secondArray имеет6 значений.В этой ситуации [firstArray objectAtIndex:4] выдаст исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...