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

您需要包装整数值,例如@0, @83, @174, ...,因为原始整数不是对象。

于 2013-08-29T11:07:54.077 回答
3

NSMutableArray 类作为 cocoa 中的大多数集合类,只接受对象。因此,如果要输入数字,则不能输入原始类型,而只能输入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

Objective-C 集合类只能存储对象;不是像int.

您需要将它们包装在NSNumber对象中。

如果这些是文字值,那么@Kirsteins 提供的答案演示了语法。

于 2013-08-29T11:08:28.803 回答
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 回答