【发布时间】:2013-12-12 10:05:19
【问题描述】:
我有一个带有一些字符串的pickerView (0,1,2,3,4,5,6,7) 和另一个组件(0,15,30,45)
一切正常,除了当我从组件 1 中选择 3 以上的东西时。它给了我一个超出范围的异常。
在viewDidLoad我声明并填写。
hoursArray = @[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7"];
我根本不碰它,只为nslogs。
在选择器 didSelectRow 中,我可以 NSlog([hoursarray objectAtindex:7) 它写 7。
但如果我在选择器中选择 3 以上,它会给我:
由于未捕获的异常“NSRangeException”而终止应用程序,原因: '* -[__NSArrayI objectAtIndex:]: 索引 4 超出范围 [0 .. 3]
下面的代码是一个 NSLOG 打印数组索引 4,它的工作。 但在选择器索引 4 超出范围,它是同一个数组
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
NSLog(@"hours array index 4:%@",[hoursArray objectAtIndex:7]);
NSString *selectedHours = @"0";
NSString *selectedQuarters = @"0";
//get picker values
if(component==0) {
selectedHours = [hoursArray objectAtIndex:row];
selectedQuarters = [quarterArray objectAtIndex:row];
}else {
selectedHours = [hoursArray objectAtIndex:row];
selectedQuarters = [quarterArray objectAtIndex:row];
}
//create formatted date
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@" dd/MM"];
NSString *displayDate = [formatter stringFromDate:[datePicker date]];
NSString *lblString = [[NSString alloc]initWithFormat:@"Tryk for at tilføje %@ time(r) & %@ minutter til d. %@ ",selectedHours,selectedQuarters,displayDate];
[btnRegistrer setTitle:lblString forState:UIControlStateNormal];
}
【问题讨论】:
-
你也应该显示一些代码!
-
在我看来,您在选择器中使用了 (0, 15, 30, 45)。
-
我真的不知道该显示什么,它真的很简单。我创建了一个数组,填充它,尝试获取选择器中选择的值,它给出了一个奇怪的异常。
-
也许你倒置了 pickerView 的两个组件......这个例外涉及一个由 4 个元素组成的数组,这可能是你命名为“另一个组件”的那个,它只有 4 个元素 :-)
-
显示 pickerView 委托方法。
标签: ios objective-c indexoutofboundsexception