NSMutableArray *experienceValues;
experienceValues = [NSMutableArray alloc] initWithObjects:0,83,174,276,nil];
NSLog(@"%@", [experienceValues objectAtIndex:3]);
为什么在前一行明确分配和初始化时,它总是抛出-[__NSArrayM objectAtIndex:]: index 3 beyond bounds for empty array
?
答案 0 :(得分:3)
您需要包含像@0, @83, @174, ...
这样的整数值,因为原始整数不是对象。
答案 1 :(得分:3)
NSMutableArray类作为cocoa中的大多数集合类,只接受对象。因此,如果您想要输入数字,则不能放置基本类型,而只能放置NSNumber
类的实例,因此:
[[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:0]...etc
或者使用文字:
[[NSMutableArray alloc] initWithObjects:@0,@83,@174,@276.. etc
答案 2 :(得分:2)
数组为空,因为参数为nil终止,0被解释为nil。
数组应该只包含对象(而不是像int这样的基元)。在这种情况下,您应该为所有数字创建NSNumbers。您可以使用数字文字语法@2.0
来完成此操作。
答案 3 :(得分:1)
答案 4 :(得分:1)
试试这个
NSMutableArray *experienceValues = [[NSMutableArray alloc] initWithObjects:@0,@83,@174,@276,......., nil];
NSLog(@"%d", [experienceValues objectAtIndex:3]);
由于initWithObjects:
只接受对象,因此只需要在其中放置对象
答案 5 :(得分:1)
您正在尝试将整数值添加到NSArray。
NSMutableArray *experienceValues = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInteger:42],nil];
然后将其转换回整数,如
NSLog(@"%@", [experienceValues objectAtIndex:0]);