0
-(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 count] 是 9。我真的很困惑。谁能帮我?

4

2 回答 2

4

该代码看起来不错(请参阅我对问题的评论);您的问题可能源于使用

if (x<=[rpmValues count]) {

这将包括数组的计数,超出索引范围一。采用

if (x < [rpmValues count]) {
于 2012-11-06T22:43:40.937 回答
0

至少if (x<=[rpmValues count])应该是if (x<[rpmValues count])。否则,如果您有一个包含两个实体的数组,那么您将允许自己访问索引 0、1 和 2 — 总共三种可能性。

maximumValue您是否可以根据类似的逻辑在“9”的步进器上设置一个?

于 2012-11-06T22:43:54.893 回答