Как вы храните значения "int" в NSMutableArray * или NSMutableDictionary *?Хронические проблемы с данными JSON, которые поступают как целые числа. - PullRequest
8 голосов
/ 22 января 2011

Как вы храните "int" значения в NSMutableArray или NSMutableDictionary?Хронические проблемы с данными JSON, которые поступают в виде целых чисел.

Стоит ли пытаться сохранить эти целые числа как NSNumber объекты или просто как строки, содержащие целое число?

Насколько опасно делать «сырое» (int) преобразование указателей, если я знаю, что значения всегда будут натуральными числами (числа> = 0, включая ноль для нуля).

Целые числа, с которыми я всегда работаю, - это идентификаторы внешних ключей из базы данных.

Ответы [ 5 ]

23 голосов
/ 22 января 2011

Используйте NSNumber следующим образом:

int yourInt = 5;
[myMutableArray addObject:[NSNumber numberWithInt:yourInt]];

Или используя современный синтаксис Objective C, вы можете использовать следующее для выражений:

[myMutableArray addObject:@(2 + 3)];

Или для одиноких чисел:

[myMutableArray addObject:@5];
4 голосов
/ 22 января 2011

Использовать NSNumber объекты (например, используя [NSNumber numberWithInt:value])

2 голосов
/ 22 января 2011

Вы также можете использовать:

[myDict setObject:[NSNumber numberWithInt:anInteger] forKey:@"MyInteger"];
2 голосов
/ 22 января 2011

Вам нужно использовать NSNumber, как уже сказали другие, или использовать NSString со строковым представлением числа.На самом деле не имеет значения, какой, но NSNumber будет более эффективным.

Вы не можете просто добавить int, пусть он будет интерпретирован как указатель,и затем брось его обратно на выход.Причина в том, что объекту (который int будет интерпретирован как указатель) будет отправлено сообщение retain, когда он будет добавлен в массив, и это определенно вызовет сбой, так как это будет недопустимый указатель.

0 голосов
/ 10 января 2014

Вы также можете добавить значение, как это

NSMutableArray * values ​​= [NSMutableArray alloc] init];

[значения addObject: [NSNumber numberWithInt: 23]];

...