2011-04-29 52 views
5

这必须是非常基本的,但我想知道如何将一个整数添加到数组?如何向数组添加整数?

我知道我可以添加字符串是这样的:

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]; 

至少编译器是不是快乐与并告诉我,我没有告诉过我就做了演员。

任何解释将非常感激。

回答

27

是的没错。编译器不会像这样接受你的代码。区别如下:

如果您编写@"a String",它与创建字符串并自动释放它相同。所以你通过使用@"a String"来创建一个对象。

但是一个数组只能存储对象(更精确的说:指向对象的指针)。所以你必须创建存储你的整数的对象。

NSNumber *anumber = [NSNumber numberWithInteger:4]; 
[yourArray addObject:anumber]; 

要再次retrive整数,像这样做

NSNumber anumber = [yourArray objectAtIndex:6]; 
int yourInteger = [anumber intValue]; 

我希望我的回答可以帮助你理解为什么这是行不通的。您不能将整数转换为指针。这是您从Xcode获得的警告。

编辑:

它现在也可以编写以下

[yourArray addObject:@3]; 

这是一个快捷方式创建的NSNumber。同样的语法可用于阵列

@[@1, @2]; 

会给你含有值1和2个NSNumber的对象一个NSArray 2.

+0

谢谢,我想我现在明白这一点。你的解释非常好! – 2011-04-29 20:58:30

+0

谢谢。 mservidio的答案是绝对正确的。但我总是喜欢解释。 ;-) – 2011-04-29 21:00:41

+0

只是一个后续问题:'数字'存储在我的数组整数(int)或NSInteger?或者这真的不重要? – 2011-04-29 21:04:03

7

你必须使用NSNumbers我认为,尝试添加这些对象到你的数组:[NSNumber numberWithInteger:myInt];

NSMutableArray *trArray = [[NSMutableArray alloc] init];  
NSNumber *yourNumber = [[NSNumber alloc] numberWithInt:5]; 

[trArray addObject: yourNumber]; 
+0

mservidio是正确的。我相信想到这个的方法是因为'@“2”'是一个'NSString'对象。但是'2'本身就是一个价值,而不是一个客体。 – dredful 2011-04-29 20:50:34

+1

要展开,您基本上创建了一个NSNumber对象的实例,该对象是基本int或任何其他对象版本,然后将此对象添加到该数组。另外,要从数组中取出原始值,使用[[myArray objectAtIndex:0] intValue]; – 2011-04-29 20:52:11

4

,如果你想使用字符串也可以使用这样的:

NSMutableArray *array = [[NSMutableArray alloc] init]; 
[array addObject:[NSString stringWithFormat:@"%d",1]]; 
[[array objectAtIndex:0] intValue];