我是一名新手,并且一直在整天准备/观看/寻找解决方案。以下代码有效,但现在如何向数组添加整数?
//this works
NSArray *array = [NSArray arrayWithObjects:[NSNumber numberWithInt:10],
[NSNumber numberWithFloat:25.96], @"Hello World", nil];
for (id obj in array)
NSLog(@"%@", obj);
以下返回错误:使用未声明的标识符'obj'
NSArray *array = [NSArray arrayWithObjects:[NSNumber numberWithInt:10],
[NSNumber numberWithFloat:25.96], @"Hello World", nil];
for (id obj in array)
[array addObject:7];
NSLog(@"%@", obj);
答案 0 :(得分:6)
你必须使用NSMutabbleArray而不是NSArray动态添加对象,不要忘记[]而arrayWithObjects仅适用于nsarray。试试这个:
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:[NSNumber numberWithInt:10]];
[array addObject:[NSNumber numberWithFloat:25.96]];
[array addObject:@"Hello World"];
[array addObject:[NSNumber numberWithInt:7]];
for (id obj in array) {
NSLog(@"%@", obj);
}
只需复制粘贴此代码,它将使用您想要的对象启动数组,然后显示它们。
答案 1 :(得分:3)
这里有几个问题:
NSMutableArray
代替NSArray
来执行您想要的操作。 (顺便提一下,您的实际NSArray
创建代码没问题。)for()
循环正在爆炸,主要是因为您没有大括号来分隔您的代码。如果没有大括号,编译器将使用仅 for
之后的第一行作为循环内容。因此,NSLog()
位于循环之外,obj
超出范围。addObject:
行没有括号,就像在[array addObject:...]
中一样。甚至编译了吗?这是复制和粘贴错误吗?NSArray
。您需要按照之前在代码中正确执行的操作进行操作:[array addObject:[NSNumber numberWithInt:7]]
。鉴于你使用缩进作为语法,我猜你可能有更多的Python(或类似)背景?如果是这样,您将不得不快速调整一些思维模式,以便在C或Objective-C中有效地编程。我敦促你得到一本关于Cocoa编程的初学者书,并从一开始就开始,否则你很快就会非常沮丧。
编辑:我注意到在我发布之后你又添加了一些括号,所以我在上面打了#3。这会产生另一个重要注意事项:确保如果您提出复制并粘贴失败的完全代码的问题。永远不要重新打字!
答案 2 :(得分:1)
这是因为你在for循环中使用缩进只考虑以下行。试试这个
for (id obj in array) {
[array addObject:[NSNumber numberWithInt:7]];
NSLog(@"%@", obj);
}
注意强>
如果你想在初始化后添加对象,我认为你需要使用NSMutableArray。修改循环的集合也不是一个好主意(在这种情况下,循环将永远不会结束,因为你继续将一个对象添加到循环中的数组中)。您可以使用此行创建数组的可变版本。
NSMutableArray * mutArray = [NSMutableArray arrayWithArray:array];