NSArray索引1超出空数组的边界

时间:2012-11-06 22:36:56

标签: objective-c ios xcode

-(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.我真的很困惑。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

该代码似乎没问题(请参阅我对该问题的评论);您的问题可能来自

的使用
if (x<=[rpmValues count]) {

这将包括数组的计数,它超过索引范围一。使用

if (x < [rpmValues count]) {

答案 1 :(得分:0)

至少if (x<=[rpmValues count])应为if (x<[rpmValues count])。否则,如果你有一个带有两个实体的数组,那么你就可以自己访问索引0,1和2 - 总共有三种可能性。

您是否有可能根据类似的逻辑在'9'的步进器上设置maximumValue