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