我是iOS开发的新手,当我按照教程我的应用程序继续崩溃但我不知道为什么..
2012-11-07 11:52:30.657 SliderList[2725:c07] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 8 beyond bounds [0 .. 7]'
*** First throw call stack:
(0x1c8d012 0x10cae7e 0x1c42b44 0x2cb2 0x10de705 0x15920 0x158b8 0xd6671 0xd6bcf 0x15c52d 0xd5968 0x451bd 0x45552 0x233aa 0x14cf8 0x1be8df9 0x1be8ad0 0x1c02bf5 0x1c02962 0x1c33bb6 0x1c32f44 0x1c32e1b 0x1be77e3 0x1be7668 0x1265c 0x26bd 0x25e5 0x1)
libc++abi.dylib: terminate called throwing an exception
#import "ViewController.h"
NSArray *keuzeArray;
@interface ViewController ()
@end
@implementation ViewController
@synthesize keuze;
- (IBAction)sliderValueChanged: (UISlider *)sender
{
self.keuze.text = [keuzeArray objectAtIndex:sender.value];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
keuzeArray = [NSArray arrayWithObjects:
@"Koffie zwart", @"Koffie melk", @"Koffie melk&suiker", @"cafe au lait", @"Koud water", @"Heet water", @"Chocomel", @"Wiener melange", nil];
}
- (void) viewDidUnload
{
[super viewDidUnload];
}
- (BOOL) shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)InterfaceOrientation
{
return (InterfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
@end
答案 0 :(得分:1)
您正在从数组中调用索引不在您的数组上的对象。
基本上你的数组有8个元素(0 to 7
),你正在调用索引8
只需更改此行:
self.keuze.text = [keuzeArray objectAtIndex:(sender.value - 1)];
这一切都应该有效
答案 1 :(得分:1)
滑块的最大值超出了模型数组中元素的数量。
答案 2 :(得分:1)
似乎UISlider
方法中的sliderValueChanged:
传递的值为8
。由于NSArray
中的索引从零开始,因此您无法要求7
之外的元素。
您需要重新配置滑块,设置0
的最小值和7
的最大值。
答案 3 :(得分:0)
您只有8
个元素。
在数组中,索引从0开始。因此,数组中的最后一个元素索引是7
。
如果您尝试获取索引8
或更高的元素,则会发生异常(NSRangeException
)并且您的应用将崩溃。
因此,当您尝试从数组中获取元素时,请检查数组边界。
答案 4 :(得分:0)
您的数组有8个索引为0到7的对象。 而你正试图在索引8处访问该对象。这就是它抛出异常错误的原因。
答案 5 :(得分:0)
如果它在UITableView中:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return arrayResponse.count-1;
}