NSJSONSerialization не обрабатывает отрицательные целые числа

Я пытаюсь проанализировать файл JSON в NSArray, и все это хорошо работает для положительных чисел. Однако все отрицательные целые числа в этом файле JSON приводят к большим числам, например "[11] __NSCFNumber * (long)72057594037927933". Как я могу заставить это работать?

Вот мой файл JSON:

[0,1,2,3,4,5,6,7,8,9,10,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11]

а вот код:

 NSError* error;
 NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://some/json/file.json"]];
 NSMutableArray* array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];

1 ответ

Решение

XCode не всегда печатает хорошие значения в область Отладки XCode (где появляются живые значения для контекста).

Я поместил ваш код в свой собственный проект, и когда я перебираю каждую строку, я вижу "eachNumber __NSCFNumber * (long)72057594037927934 {0xbfffffffffffffe3} биты, но если я попытаюсь распечатать значения массива в консоли, вы увидите правильный "-2"результат.

Попробуй сам. Я добавил в эти строки сразу после вашей:

NSMutableArray* array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];

NSLog(@"array is %@", array);

for(id eachNumber in array)
{
    NSLog(@"eachNumber is %@", eachNumber);
}
Другие вопросы по тегам