iPhone dev - как поймать исключение 'NSRangeException'

В моем приложении я пытаюсь прокрутить UITableView к вершине однажды после того, как я обновил содержание таблицы. Однако при некотором обстоятельстве, моя таблица ПУСТА. Таким образом, я получил следующее исключение:

Завершение приложения из-за неперехваченного исключения 'NSRangeException', причина: '-[UITableView scrollToRowAtIndexPath:atScrollPosition:animated:]: строка (0) вне границ (0) для раздела (0).'

как я могу поймать это исключение? Я попробовал

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];

if (indexPath != nil) {
    [EventTable scrollToRowAtIndexPath:indexPath
                atScrollPosition:UITableViewScrollPositionTop animated:YES];
}

но это не ловит исключение, потому что indexPath не является нолем.

6
задан fbrereto 19 May 2010 в 17:23
поделиться

2 ответа

Перед прокруткой до IndexPath проверьте свой UITableView, чтобы убедиться, что строка и раздел, до которого вы пытаетесь прокрутить, меньше, чем количество строк и раздел в вашей таблице, соответственно. Если это так, не пытайтесь перейти к этому IndexPath.

if ( [tableView numberOfSections] < section || [tableView numberOfRowsInSection] < row )
12
ответ дан 8 December 2019 в 12:58
поделиться

Обработка исключений идет по пути, отличному от типичных выражений управления потоком. Apple написала полезную статью о Objective-C Exception Handling. По сути, вам нужно обернуть ваш код в блоки @try/@catch. Именно в блоке @catch вы получите исключение и выполните соответствующие дальнейшие действия в коде.

6
ответ дан 8 December 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: