我的阵列/出错有什么问题?

时间:2011-04-19 20:22:10

标签: iphone objective-c

我有以下代码,并且在NSString *重量线上收到错误:

  

*由于未捕获的异常'NSRangeException'而终止应用程序,原因:'* - [NSArray objectAtIndex:]:索引2超出边界[0 .. 1]'    - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
       NSArray *array;
       array = [[NSArray alloc]initWithObjects:@"0", @"1/2", nil];           
       UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 37)];
       NSString *weight = [[array objectAtIndex:row] stringValue];
       label.text = [NSString stringWithFormat:@"%@", weight]

3 个答案:

答案 0 :(得分:2)

问题出现在错误消息中。怎么错是你有一个包含2个内容的数组(字符串“0”和“1/2”),而你要求索引2,这是无效的。 (只有0和1才有效)。

你没有表明你是如何得到row但这是你的问题。它太大了。

答案 1 :(得分:0)

“row”的值是2,但是你的数组只有2个元素,这意味着row的maximux值应该只是“1”

答案 2 :(得分:0)

您的数组中有2个对象,从您的异常看起来,行是2,它将尝试访问第3个对象。在您只有2个对象在同一个方法中声明的情况下,为什么不在默认情况下使用switch语句和log / assert?最终,您需要确保告诉选择器正确的组件的适当数量的列。