2012-02-23 13 views
2

にNSStringのをパース:SBJSON私はSBJson 3.0.4を使用してNSDictionaryのにJSONデータが含まれていたNSStringを解析しようとしているが、私はそれを行うとき、私はこのエラーを取得するNSDictionaryの

"WebKit discarded an uncaught exception in the webView:shouldInsertText:replacingDOMRange:givenAction: delegate: -[__NSCFString JSONValue]: unrecognized selector sent to instance 0x6ab7a40"

限り私は(それほど遠くない)知っている、私は取得してJSONが有効なので、私はなぜこれが起こっているのか分からない。

NSString *tempURL = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?address=%@&sensor=true",userInput.text]; 
NSURL *url = [NSURL URLWithString:tempURL]; 
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url 
              cachePolicy:NSURLRequestReturnCacheDataElseLoad 
             timeoutInterval:30]; 
// fetch the JSON response 
NSData *urlData; 
NSURLResponse *response; 
NSError *error; 

// make the synchronous request 
urlData = [NSURLConnection sendSynchronousRequest:urlRequest 
           returningResponse:&response 
              error:&error]; 

// construct a String around the Data from the response 
NSString *data = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding]; 
NSDictionary *feed = [data JSONValue]; 
+0

文字列 'data'の値を出力します。データの内容をJSONLint.comのツールにコピーし、有効なJSONかどうかを確認します。何が起こるか教えてください。 i386アーキテクチャのための '未定義のシンボル: にObjC-クラス - :から参照 「_OBJC_CLASS _ $ _ SBJsonWriter」、 – Jim

+0

それは私がコンパイルソースにそれを追加するのを忘れ、私は、私は今、2つのエラーを得ることをやった時に、有効な –

答えて

9

エラーメッセージの重要な部分はこれです:

-[__NSCFString JSONValue]: unrecognized selector sent to instance 0x6ab7a40 

__NSCFStringクラスはNSStringインターフェイスのプライベート実装クラスですので、あなた私のコードはここにある ...あまりにも細かコンパイルちょうどそれがNSStringと言うふりをすることができます。

JSONValueメッセージをNSStringに送信しています。NSStringにはそのセレクタが認識されないと表示されています。 SBJsonライブラリは、JSONValueメソッドをNSStringクラスusing a categoryに追加します。

私はあなたのアプリにNSObject+SBJson.oをリンクしていないと推測します。あなたのアプリにSBJsonのソースファイルをコピーした場合は、NSObject+SBJson.mにコピーして、それがターゲットの "ソースをコンパイル"する段階に含まれていることを確認してください。

SBJsonライブラリを作成してアプリをリンクしている場合は、-ObjCフラグをリンカーオプション、または-all_loadフラグに追加する必要があります。

+0

だと言いますid: NSObjectのobjc-class-ref-SBJson.o ld:アーキテクチャi386のシンボルが見つかりません clang:error:linkerコマンドで失敗しました終了コード1(呼び出しには-vを使います) ' –

+4

SBJsonの' .m'ファイルの** all **を「ソースのコンパイル」ビルド段階に追加する必要があります。 –

+0

aaaaaahhhhhh ok。うわー、ありがとう!それは今完璧に動作します!ありがとう! –

関連する問題