2011-04-29 158 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];