2011-07-27 4 views
1

Objective Cが新しく、ジオコーディングAPI JSONレスポンスの辞書表現を解析しようとしています。ここに私が持っているものがあります:Objective Cネストされたディクショナリに無効なセレクタエラーが発生する

NSString *responseString = [request responseString]; 
NSDictionary *responseDict = [responseString JSONValue]; 
NSDictionary *results = [responseDict objectForKey:@"results"]; 
NSDictionary *geometry = [results objectForKey:@"geometry"]; 

無効なセレクターを示すSIGABRTエラーが表示されます。私はこれを修正する方法や、さらに良い方法を知らないのですが、ネストされた辞書アクセスを行う別の方法がありますか?

あなたはここにJSONレスポンスを見ることができます:

http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true

EDIT:はこの場合、より多くのコード

答えて

0

を追加し、あなたはresponseDictが何であるかを確認する必要があります。それはおそらくゼロです。どの値が[responseString JSONValue]から戻ってくるのかを判断する必要があります(NSDictionaryでもNSArrayでも構いませんが、SBJSONもこれに対してnilを返すことができます)。

つまり、私はresponseDictがNSDictionaryインスタンスではないことをかなり保証することができます。

+0

ああ、私はSBJSONを使用しています。 – yretuta

+0

結果変数の内容をデバッガに表示することができ、JSONレスポンスの対応するデータが表示されます。エラーは、結果変数にobjectForKeyメッセージを渡そうとする行で発生します – yretuta

+0

結果変数がNSArrayインスタンスではなくNSDictionaryであることを確認できますか? – dtuckernet

2

-objectForKey:が返すオブジェクトのクラスをチェックする必要があります。 -objectForKey:は、を返します。あなたが返す応答で残念なことにNSDictionaryとしています。結果は、JSONパーサーが-objectForKey:に応答しないNSArrayとして返す可能性が高い配列を返します。

関連する問題