程序收到信号“SIGABRT”

时间:2011-08-03 10:04:40

标签: objective-c ios4

嘿伙计们我正在制作一个使用uipicker来获取用户输入的iphone应用程序。我有四种不同的uipickers和单独的阵列。 4个阵列中的2个工作。我能够从中选择价值! 。但是当点击它们中的另外两个给我“SIGABRT”消息时,另一个消息到达第8个元素时也是如此!这里是我的代码!

- (void)viewDidLoad{
    subtypepickerarray =[[NSMutableArray alloc]init];
        [subtypepickerarray addObject:@"hello"];
        [subtypepickerarray addObject:@"object 2"];
        [subtypepickerarray addObject:@"jfhgsjdfhg"];
        [subtypepicker reloadAllComponents];

    lymphnodearray = [[NSMutableArray alloc]init];

    for (int j = 0; j<=10;j++){
        NSString *answer1 = [NSString stringWithFormat:@"%d",j];

        [lymphnodearray addObject:answer1];
        [Pos_lymppicker reloadAllComponents];

    }
}

当我收到错误消息时会突出显示这些代码

- (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 个答案:

答案 0 :(得分:1)

问题是UIPickerView的数据源(在您的案例数组中)有更多要显示的项目,然后是UIPicker。 您需要使用此方法才能使其正常工作

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

答案 1 :(得分:0)

数组包含的对象少于您尝试访问的对象。

它只有3个对象,你试图访问4个对象。

因此,请检查阵列的数量并相应填写拣货员。

同时检查您的所有4个数组是否已正确填充数据。

希望这有帮助。