[__NSArrayI objectAtIndex:]:索引8超出边界[0 .. 7]'

时间:2012-11-07 11:28:10

标签: iphone ios6

我是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

6 个答案:

答案 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;
}