Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSMutableArray始终为空_Iphone_Ios_Objective C_Cocoa_Nsmutablearray - Fatal编程技术网

Iphone NSMutableArray始终为空

Iphone NSMutableArray始终为空,iphone,ios,objective-c,cocoa,nsmutablearray,Iphone,Ios,Objective C,Cocoa,Nsmutablearray,为什么在前面的行中明确分配和初始化空数组时,总是抛出-[\uu NSArrayM objectAtIndex:]:索引3超出空数组的界限?您需要包装整数值,如@0、@83、@174、,,因为基元整数不是对象。Objective-C集合类只能存储对象;不是像int这样的原语 您需要将它们包装在对象中 如果这些是文字值,@Kirsteins提供的答案演示了语法。数组为空,因为参数以nil结尾,0被解释为nil 数组应仅包含对象(与int等基本体相反)。在您的情况下,您应该为所有数字创建NSNumbe

为什么在前面的行中明确分配和初始化空数组时,总是抛出
-[\uu NSArrayM objectAtIndex:]:索引3超出空数组的界限?
您需要包装整数值,如
@0、@83、@174、
,,因为基元整数不是对象。

Objective-C集合类只能存储对象;不是像
int
这样的原语

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


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

数组为空,因为参数以nil结尾,0被解释为nil

数组应仅包含对象(与int等基本体相反)。在您的情况下,您应该为所有数字创建NSNumber。您可以使用数字文字语法
@2.0

试试这个

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

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

作为
initWithObjects:
只接受对象您只需要将对象放入其中

NSMutableArray类与cocoa中的大多数集合类一样,只接受对象。因此,如果要输入数字,则不能输入基元类型,只能输入
NSNumber
类的实例,因此:

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

NSLog(@"%d", [experienceValues objectAtIndex:3]);
或使用文字:

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

您正在尝试向NSArray添加整数值

[[NSMutableArray alloc] initWithObjects:@0,@83,@174,@276.. etc
然后将其转换回整数,如

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

我认为@0(NSNumber)会比@0(NSString)好。谢谢你的建议,是的,它肯定会更好:)太棒了,谢谢你,但我不能在8分钟内接受任何答案。没什么大不了的,欢迎你。我还想指出,当你得到一个你想要的值时,你会得到一个NSnumber对象,所以你不能对它进行“数学运算”。因此[[experienceValues objectAtIndex:3]intValue]将返回正确的基元类型。备注:
@0、@83
是“NSNumber文本”。“Subscripting”是例如
array[0]
dict[@“key”]
。这里您添加的是字符串,而不是NSNumberliterals@c.cam108..yes,这不是一个理想的方法..我同意你的观点,并对添加字符串然后将其转换为整数的旧方法进行了解释..因此编辑了答案..完美,这正是我想要的。你们的问题已经得到了很好的回答,但你们在第2行并没有收到任何警告或错误吗?首先,为什么不让第1行和第2行只是一行呢?第二,在第2行
[NSMutableArray all…
前面缺少一个
[
,最后,在每个整数前面需要
@
NSLog(@"%@", [experienceValues objectAtIndex:0]);