2
NSMutableArray *experienceValues;
experienceValues = [NSMutableArray alloc] initWithObjects:0,83,174,276,nil];

NSLog(@"%@", [experienceValues objectAtIndex:3]);

-[__NSArrayM objectAtIndex:]: index 3 beyond bounds for empty array直前の行で明確に割り当てられて初期化されている場合、これが常にスローされるのはなぜですか?

4

6 に答える 6

3

ココアのほとんどのコレクション クラスである NSMutableArray クラスは、オブジェクトのみを受け入れます。したがって、数値を入れたい場合は、プリミティブ型を入れることはできませんが、NSNumberクラスのインスタンスのみを入れることができます。

[[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:0]...etc

またはリテラルで:

[[NSMutableArray alloc] initWithObjects:@0,@83,@174,@276.. etc
于 2013-08-29T11:10:20.217 に答える
2

引数は nil で終了し、0 は nil として解釈されるため、配列は空です。

配列には、(int のようなプリミティブではなく) オブジェクトのみを含める必要があります。あなたの場合、すべての番号に対して NSNumbers を作成する必要があります。数値リテラルの構文でそれを行うことができます@2.0

于 2013-08-29T11:09:09.347 に答える
1

これを試して

NSMutableArray *experienceValues = [[NSMutableArray alloc] initWithObjects:@0,@83,@174,@276,......., nil];

NSLog(@"%d", [experienceValues objectAtIndex:3]);

オブジェクトのみを受け入れるのでinitWithObjects:、オブジェクトのみを入れる必要があります

于 2013-08-29T11:09:40.100 に答える
1

NSArray に整数値を追加しようとしています。

NSMutableArray *experienceValues = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInteger:42],nil];

次に、次のように整数に戻します。

NSLog(@"%@", [experienceValues objectAtIndex:0]);
于 2013-08-29T11:12:00.390 に答える