2

私がいるのと同じような状況を見つけることを期待して、ここで質問をまとめましたが、見つけることができませんでした。私の質問は、iOS 5のNSJSONSerializationクラスと、JSONObjectWithData:options:error:メソッドから返された単一の値の解析を処理する方法を扱っています。返されるJSONデータは、次のような配列内の単一の値です。

[1]

データは、使用しているWebサービスで実行されているロジックに応じて、1(上記のように)または0のいずれかになります。ちなみに、WebサービスはWCFRESTサービスです。XCodeでは、逆シリアル化されたJSONが一時的なNSArrayオブジェクトに割り当てられた後、デバッガーは次のように表示します。

po parsedData

(NSArray *) $43 = 0x06e2ee70 <__NSCFArray 0x6e2ee70>( 1 )

ObjectAtIndex:を使用して配列から値を取得しようとすると、次のようになります。

po [parsedData objectAtIndex:0]

(id) $44 = 0x06b1dad0 1

0x06b1dad0私の質問は:?の前の16進値( )は1何ですか?たぶん、私がアクセスしていないキーまたはインデックス(実際の値を取得するために配列に十分に踏み込んでいないと思っていました)?JSONのフォーマット方法と関係がありますか?考えていたのですが、フォーマットがずれているような気がします。

私が抱えている問題は、JSONメッセージに格納されている実際の値を取得できないことです。配列内の要素にアクセスしparsedDataて変数に割り当てると、ではなく16進値のみが返されます1

NSIntegerにキャストすると、次のようになります。

po (NSInteger)[parsedData objectAtIndex:0]

(NSInteger) $45 = 112319184 1

これについての洞察をいただければ幸いです。これがフォーラムの他の場所で対処されている場合は、お詫び申し上げます。

ありがとう。

4

1 に答える 1

1

オブジェクトがNSNumberである可能性が高いので、これを試してください。

[[parsedData objectAtIndex:0] intValue];
于 2012-06-19T01:41:52.553 に答える