1

我的 iphone 应用程序正在访问 JSON 服务,该服务返回如下内容:

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

我正在使用的代码成功地解析了任何 NSStrings,例如上面的注释字段,但我遇到了数值问题。

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

*total 变量未正确设置并导致 EXC_BAD_ACCESS 错误。

如何解析objective-c中的数值?

4

4 回答 4

4

将对象转换为正确的数据类型,像这样

float total = [[res objectForKey:@"Total"] floatValue];
于 2013-01-29T08:53:36.823 回答
1

只需获取NSString *strtotal = [res objectForKey:@"Total"];然后转换您想要的任何格式

NSDecimalNumber *decimal = [NSDecimalNumber decimalNumberWithString:strtotal];
于 2013-01-29T09:05:34.353 回答
0

您也可以使用以下方法

+(NSDecimalNumber *)decimalNumberWithString:(NSString *)numericString in NSDecimalNumber
于 2013-01-29T08:54:24.123 回答
0

NSDecimal不是一个对象,它是一个不透明的结构。NSDecimalNumber是一个对象,你想要投射到什么。由于idNSDecimalNumber *都是对象类型,因此您不需要使用__bridge.

此外,您的 JSON 中的数字甚至可能无法解析为十进制数;它可能只是一个浮点数或双精度数(包含在一个 中NSNumber)。

于 2013-01-29T09:01:08.347 回答