这一定是非常基本的,但我想知道如何在数组中添加整数?
我知道我可以添加这样的字符串:
NSMutableArray *trArray = [[NSMutableArray alloc] init];
[trArray addObject:@"0"];
[trArray addObject:@"1"];
[trArray addObject:@"2"];
[trArray addObject:@"3"];
但我想我不能简单地添加这样的整数:
NSMutableArray *trArray = [[NSMutableArray alloc] init];
[trArray addObject:0];
[trArray addObject:1];
[trArray addObject:2];
[trArray addObject:3];
至少编译器对此并不满意并告诉我,我在没有告诉它的情况下正在进行演员表。
非常感谢任何解释。
答案 0 :(得分:27)
是的,这是对的。编译器不会接受这样的代码。区别在于:
如果你写@"a String"
,它就像你创建一个字符串并自动释放它一样。因此,您可以使用@"a String"
创建对象。
但是数组只能存储对象(更精确:指向对象的指针)。所以你必须创建存储整数的对象。
NSNumber *anumber = [NSNumber numberWithInteger:4];
[yourArray addObject:anumber];
要再次检索整数,请执行此操作
NSNumber anumber = [yourArray objectAtIndex:6];
int yourInteger = [anumber intValue];
我希望我的回答可以帮助您理解为什么它不起作用。您不能将整数强制转换为指针。这是你从Xcode得到的警告。
修改强>
现在也可以编写以下内容
[yourArray addObject:@3];
这是创建NSNumber的快捷方式。数组
的语法相同@[@1, @2];
将为您提供一个NSArray,其中包含2个值为1和2的NSNumber对象。
答案 1 :(得分:7)
我认为你必须使用NSNumbers,尝试将这些对象添加到你的数组中:[NSNumber numberWithInteger:myInt];
NSMutableArray *trArray = [[NSMutableArray alloc] init];
NSNumber *yourNumber = [[NSNumber alloc] numberWithInt:5];
[trArray addObject: yourNumber];
答案 2 :(得分:4)
如果你想使用字符串,你也可以使用它:
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:[NSString stringWithFormat:@"%d",1]];
[[array objectAtIndex:0] intValue];