Парсинг JSON как числовой - iPhone

Мое приложение для iPhone получает доступ к обслуживанию JSON, которое возвращает что-то как:

{"theResult":{"Total":1.5, "Comment":"some comment"}}

Кодекс, который я использую успешно, разбирает любого Нсстрингса, такого как область комментария выше, но я испытываю затруднения из-за числовых значений.

NSDictionary *res= [json objectForKey:@"theResult"];
NSString *comment = [res objectForKey:@"Comment"];
NSDecimal *total = (__bridge NSDecimal *)[res objectForKey:@"Total"]; 

*полная переменная не становится установленной правильно и вызывает ошибку EXC_BAD_ACCESS.

Как я разбираю числовые значения в цели-c?

1
nl ja de

4 ответы

преобразуйте объект в правильный тип данных, как это

float total = [[res objectForKey:@"Total"] floatValue];
4
добавлено
и который является продукцией NSLog [res objectForKey: "Общее количество"] ?
добавлено автор tkanzakic, источник
попробуйте этот NSLog ("%", [res objectForKey: "Общее количество"]);
добавлено автор tkanzakic, источник
который является продукцией этого NSLog ("%", res);
добавлено автор tkanzakic, источник
когда я печатаю это использование nslog, стоимость 0.0000, а не 1.5 так я don' t думают it' s работа
добавлено автор sa555, источник
постройте подведенный (сожалеющий, что я плохо знаком с XCode),
добавлено автор sa555, источник
пустой указатель печатей. рассматривая результат json, используя веб-браузер стоимость совершенно определенно 1.5
добавлено автор sa555, источник
спасибо за подсказки, смотрел в неправильной части объекта json, плавание работает правильно
добавлено автор sa555, источник

просто доберитесь NSString *strtotal = [res objectForKey: "Общее количество"]; тогда преобразовывают то, что когда-либо форматирует, делают вы хотите как

NSDecimalNumber *decimal = [NSDecimalNumber decimalNumberWithString:strtotal];
1
добавлено

Можно также использовать следующий метод

+(NSDecimalNumber *)decimalNumberWithString:(NSString *)numericString in NSDecimalNumber
0
добавлено

NSDecimal is not an object, it's an opaque struct. NSDecimalNumber is an object and what you'll want to cast to. Since both id and NSDecimalNumber * are object types, you don't need to use __bridge.

Кроме того, число в вашем JSON даже не может быть разобрано в десятичное число; это могло просто быть плавание или двойное (содержавшийся в NSNumber ).

0
добавлено
Что это печатает? NSLog ("%, %", [res objectForKey: "Общее количество"], NSStringForClass ([[res objectForKey: "Общее количество"] класс]));
добавлено автор Jesper, источник
Я вижу you' ve, через это выше. Nevermind.
добавлено автор Jesper, источник
попробовали NSNumber *общее количество = [res objectForKey: "Общее количество"] напрасно
добавлено автор sa555, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.