2012-03-15 81 views
1

我試圖把一個NSNumber的一個陣列,這樣的:如何從數組中讀取NSNumber?

NSNumber *n = [NSNumber numberWithInt:1]; 
[[array objectAtIndex:0] setValue:n forKey:@"1"]; 

然後,我有一個動作,我想它從陣列打印n.intValue。我寫的是這樣的:

-(IBAction)action:(id)sender { 
NSNumber *n = [[array objectAtIndex:0 ] valueForKey:@"1"]; 
NSLog(@"%d",n.intValue); 
} 

的問題是,它是印刷0而不是1

我怎麼可以重寫這使它工作嗎?

謝謝。

回答

1

你可以簡單地做這樣的

NSMutableArray *array=[[NSMutableArray alloc] init]; 
NSNumber *n = [NSNumber numberWithInt:1]; 
[array addObject:n]; 
    NSLog(@"%@",[array objectAtIndex:0 ]); 
+0

謝謝,第一線固定我的問題。 – Jason 2012-03-18 00:28:09

0

您對數組的第一個對象調用setValue:n forKey:@"1"。這不會將NSNumber對象插入到數組中,我不認爲該數組中的任何對象都會響應該鍵。所以,你記錄的實際上是一個無NSNumber對象的intValue。這就是爲什麼你得到0.

你需要做的是使用NSMutableArray而不是NSArray。您可以將NSNumber作爲

NSNumber *n = [NSNumber numberWithInt:1]; 
[mutableArray insertObject:n atIndex:0]; 

和閱讀

-(IBAction)action:(id)sender { 
NSNumber *n = [mutableArray objectAtIndex:0]; 
NSLog(@"%d",n.intValue); 
}