#iphone #uitableview #textlabel
#iPhone #uitableview #textlabel
Вопрос:
Я заполняю UITableView массивом элементов, которые я извлекаю из веб-страниц.
Рассматриваемый код выбирает элемент из списка, заполненного из массива из interwebs, затем отправляет запрос обратно в другой php-скрипт-> таблица sql и т.д. На основе выбранного элемента. Проблема, с которой я сталкиваюсь, заключается в том, что весь список заполняется правильно, но при использовании последнего элемента в списке / tableview array.textLabel.text, по-видимому.. non existant. Все отправляется нормально, но этот последний элемент (не имеет значения, сколько элементов у меня в массиве, самого последнего просто нет… остаться или что-то в этом роде), и он ничего не выбирает.
Затем при отправке 2-го запроса он выдает мне ошибку out of bounds, потому что последний элемент не существует, и он говорит, что я пытаюсь извлечь что-то, чего там нет.
* Завершение работы приложения из-за неперехваченного исключения ‘NSRangeException’, причина: ‘* -[NSArray objectAtIndex:]: индекс 1 выходит за пределы [0 .. 0]’
Вот как это делает массив, который он использует для заполнения:
NSArray *listItems = [parsedOutput componentsSeparatedByString:@","];
restList = [[NSArray alloc] initWithArray:listItems];
количество строк основано на [restList count]; и т.д.
и для вызова текста я использую:
restName = [tableView cellForRowAtIndexPath:indexPath];
sendName = restName.textLabel.text;
Есть идеи, почему самый последний элемент, похоже, не существует, даже если он указан в списке и выбирается?
Ответ №1:
Ошибка точно сообщает вам, что происходит. Вы пытаетесь получить доступ к индексу, который находится за пределами массива. Таким образом, либо вы обращаетесь к неправильному массиву, либо вы обращаетесь к 1 после фактического конца массива. Попробуйте записать массив непосредственно перед строкой, в которой появляется ошибка, и посмотреть, действительно ли в нем есть нужные элементы, а также выходной индекс.строка, к которой вы пытаетесь получить доступ, имея в виду, что массивы проиндексированы с нулевым индексом.