Как я могу прочитать NSNumber из массива? - PullRequest
1 голос
/ 15 марта 2012

Я пытаюсь поместить 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 ]

1 голос
/ 15 марта 2012

Вы можете просто так сделать

NSMutableArray *array=[[NSMutableArray alloc] init];
 NSNumber *n = [NSNumber numberWithInt:1];
 [array addObject:n];
  NSLog(@"%@",[array objectAtIndex:0 ]);
0 голосов
/ 15 марта 2012

Вы вызываете setValue:n forKey:@"1" для первого объекта массива.Это не вставит объект NSNumber в массив, и я не думаю, что какой-либо объект в этом массиве будет реагировать на этот ключ.Таким образом, то, что вы регистрируете, это на самом деле объект intValue nil NSNumber.Вот почему вы получаете 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);
}
...