我试图将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。
如何重写它以使其有效?
感谢。
答案 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);
}