-1

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

6 回答 6

1

您正在从数组中调用索引不在数组上的对象。

基本上你的数组有 8 个元素(0 to 7),你正在调用索引8

只需更改此行:

self.keuze.text = [keuzeArray objectAtIndex:(sender.value - 1)];

这一切都应该工作

于 2012-11-07T11:30:10.227 回答
1

您的滑块的最大值超出了模型数组中的元素数量。

于 2012-11-07T11:30:29.660 回答
1

看来,方法UISlider中的sliderValueChanged:是用 的值传递的8。由于 in 中的索引NSArray是从零开始的,因此您不能要求超出7.

您需要重新配置滑块,将最小值设置为0,最大值设置为7

于 2012-11-07T11:30:57.663 回答
0

你只有8元素。 在数组中,索引从 0 开始。所以数组中的最后一个元素索引是7. 如果您尝试获取位于 index8或以上的元素,则会发生异常 ( NSRangeException) 并且您的应用程序将崩溃。 因此,当您尝试从数组中获取元素时,请检查数组边界。

于 2012-11-07T11:30:18.447 回答
0

您的数组有 8 个索引为 0 到 7 的对象。您正试图访问索引为 8 的对象。这就是它抛出异常错误的原因。

于 2012-11-07T11:32:44.010 回答
0

如果它在 UITableView 中:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return arrayResponse.count-1;
}
于 2016-12-22T17:42:02.397 回答