iphone: objectAtIndex вылетает, когда у таблицы нет данных - PullRequest
1 голос
/ 10 сентября 2011

у меня есть следующий код

[[categories objectAtIndex:row]objectForKey:@"name"];

, где category это nsmutablearray .. это в табличном представлении, но если категории имеют 0 строк (не ноль), это дает исключение и сбой .. исключение

Завершение работы приложения из-за необработанного исключения 'NSRangeException', причина: '- [__ NSCFArray objectAtIndex:]: index (0) за пределами (0)'

так как я могузагрузить таблицу без исключения броска

Ответы [ 2 ]

3 голосов
/ 10 сентября 2011

Пустой массив выдаст это исключение, если вы попытаетесь получить доступ к чему-либо, потому что никогда не будет объекта с каким-либо индексом, если массив пуст.Это похоже на то, что я не владею автомобилем, но вы просите одолжить мою машину ... вы не можете одолжить мою машину, если у меня ее нет (тогда я бросаю в тебя кулак исключения, чтобы я понял, что я слишком беден, чтобы владеть машиной)!=)

Сделайте это вместо:

if ([categories count]) {
    [[categories objectAtIndex:row]objectForKey:@"name"];
    ....
}

Редактировать:

На самом деле, вы, вероятно, захотите изменить этот оператор if, чтобы убедиться, что он имеетне менее row + 1 количество объектов.

if (([categories count] - 1) >= row) {
    [[categories objectAtIndex:row]objectForKey:@"name"];
    ....
}
1 голос
/ 10 сентября 2011

Что плохого в том, что вы запрашиваете элемент массива, который не существует.

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