Программа получила сигнал "SIGABRT" - PullRequest
0 голосов
/ 03 августа 2011

Эй, ребята, я делаю приложение для iphone, которое использует uipicker для получения информации от пользователя.у меня есть четыре разных uipickers и отдельные массивы для них.2 из 4 массивов работают.Я могу выбрать значения из них!.Однако два других, один из которых при нажатии, дает мне сообщение «SIGABRT», а другой, когда он попадает в 8-й элемент, делает то же самое! Вот мой код!сообщение об ошибке выделяет эти коды

- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
................
    else if (thePickerView == subtypepicker){

        return [subtypepickerarray objectAtIndex:row];

    }
    else {
        return[lymphnodearray objectAtIndex:row];
    }
}

после проверки выходных данных, я обнаружил, что

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSMutableArray objectAtIndex:]: index 3 beyond bounds [0 .. 2]'
*** Call stack at first throw:

означает ли это, что мой массив пуст?признателен! спасибо

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Проблема в том, что ваш источник данных (в вашем массиве дел) для UIPickerView имеет больше элементов для отображения, чем ожидал UIPicker. Вам нужно работать с этим методом, чтобы он работал нормально

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    NSUInteger numRows;
    numRows = (NSUInteger)[yourArray count];
}

0 голосов
/ 03 августа 2011

Массив содержит меньше объектов, чем вы пытаетесь получить доступ.

В нем всего 3 объекта, и вы пытаетесь получить доступ к 4 объектам.

Так что, пожалуйста, проверьте количество ваших массивов и заполните соответствующие поля.

Также проверьте, правильно ли заполнены все ваши 4 массива с вашими данными.

Надеюсь, это поможет.

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