-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。のインデックスNSArrayは 0 から始まるため、 を超える要素を要求することはできません7

スライダーを再構成して、最小値を0に、最大値をに設定する必要があります7

于 2012-11-07T11:30:57.663 に答える
0

UITableView にある場合:

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

あなたは8要素しか持っていません。 配列では、 index は 0 から始まります。したがって、配列の最後の要素インデックスは7. index8以上の要素を取得しようとすると、例外 ( NSRangeException) が発生し、アプリがクラッシュします。 したがって、配列から要素を取得しようとするときは、配列の境界を確認してください。

于 2012-11-07T11:30:18.447 に答える
0

配列には、インデックス 0 から 7 の 8 つのオブジェクトがあります。インデックス 8 のオブジェクトにアクセスしようとしています。そのため、例外エラーがスローされます。

于 2012-11-07T11:32:44.010 に答える