如何从数组中读取NSNumber?

时间:2012-03-15 07:09:58

标签: ios xcode nsmutablearray nsarray 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。

如何重写它以使其有效?

感谢。

2 个答案:

答案 0 :(得分:1)

你可以这样做

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

答案 1 :(得分: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);
}