1

私のiPhoneアプリは、次のようなものを返すJSONサービスにアクセスしています。

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

私が使用しているコードは、上記のコメントフィールドなどのNSStringを正常に解析しますが、数値に問題があります。

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

NSDecimalオブジェクトではなく、不透明な構造体です。NSDecimalNumberオブジェクトであり、キャストしたいものです。idとは両方ともNSDecimalNumber *オブジェクトタイプであるため、を使用する必要はありません__bridge

さらに、JSONの数値は10進数に解析されない場合もあります。フロートまたはダブル(に含まれるNSNumber)の場合があります。

于 2013-01-29T09:01:08.347 に答える
0

以下の方法も使用できます

+(NSDecimalNumber *)decimalNumberWithString:(NSString *)numericString in NSDecimalNumber
于 2013-01-29T08:54:24.123 に答える