【发布时间】:2012-10-26 23:12:32
【问题描述】:
-(IBAction)someMethod:(UIStepper *)sender{
int x=sender.value; //This is an integer from 0-8;
NSLog(@"%f",sender.value);
NSArray *rpmValues = [[NSArray alloc]initWithObjects:@"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",@"i", nil];
if (x<=[rpmValues count]) {
myLabel.text = [rpmValues objectAtIndex:x];
}
NSLog(@"%i",[rpmValues count]);
}
上面是我的代码,我想做的是通过改变 UIStepper 来改变 UILabel 的显示。这是非常直接的。但是当我改变按下步进值时,它会崩溃:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** - [__NSArrayM objectAtIndex:]: index 1 beyond bounds for empty array'
*** First throw call stack:
[rpmValue 计数] 是 9。我真的很困惑。谁能帮帮我?
【问题讨论】:
-
除了
if语句需要使用<而不是<=,这段代码看起来没问题。您是否 100% 确定错误来自此代码而不是其他地方? -
手动设置
int x为 1 似乎对我有用,你可以试试这个吗?你的 NSLog 语句是错误的,NSLog(@"%d",sender.value);打印什么?一定是其他原因导致了问题。 -
问题出在 x = [rpmValues count] 时。在该索引处获取对象不起作用,因为索引从 0 开始。
-
您不应该能够从您发布的代码中获得此错误消息——我试过了,它工作正常,直到最后一项可以像 cmets 所说的那样修复。所以,我相信你的错误在别处。
-
另外,您的错误指向一个可变数组,而 rpmValues 是不可变的。你应该在你的项目中添加一个异常断点,这样错误发生的行就会被高亮显示。
标签: objective-c ios xcode