2

私はObjective-cが初めてです。API に対して HTTPRequest を作成したいと考えています。これは機能し、NSData オブジェクトで応答を取得します。このレスポンスは json レスポンスです。応答を解析してキー: 値形式の辞書を取得するにはどうすればよいですか?

このコードを使用してデータを取得しました。

  data = [NSURLConnection sendSynchronousRequest: req
                             returningResponse: nil
                                         error: nil];

ありがとう

4

1 に答える 1

4

NSJSONSerialization (iOS5+) を使用て、JSON 文字列を Cocoa オブジェクト (NSDictionaryこの場合) に、またはその逆に変換します。

PS : 5.0 より前のバージョンの iOS もサポートする必要がある場合、つまり が利用できない場合は、たとえばNSJSONSerialization、サードパーティのライブラリがあります。その後、iOS4 と iOS5 の両方でJSONKit常に使用するか、実行時に可用性をテストして、使用可能な場合は使用できます (使用できない場合はフォールバックします)。JSONKitNSJSONSerializationJSONKit

(クロス SDK 開発の詳細については、アプリを iOS4 と互換性があり、利用可能な場合は iOS5 クラスを使用できるようにするなど、SDK 互換性ガイドを参照してください)


ところで、同期 URL リクエストの使用は避けるべきです (しなければなりません)。これにより、ネットワークから応答を受信するまでスレッドがブロックされます。メイン スレッドで実行すると、応答を受信するまで UI 全体がフリーズします。これは、モバイル環境 (最適なネットワーク カバレッジが常に得られるとは限らない) では数秒かかる場合があります。

好む:

  • デリゲートを使用する NSURLConnection の API を使用する (詳細については、URL ローディング システム プログラミング ガイドを参照してください)。
  • またはsendAsynchronousRequest:queue:completionHandler:、バックグラウンド NSOperation でリクエストを実行する新しく導入されたメソッド (iOS5+) を使用して、
  • または、リクエストの処理を容易にするサードパーティのフレームワークを使用します (そのためにはAFNetworkingをお勧めします。これは、Web サービスとの通信にも優れており、応答を JSON オブジェクトに自動的に変換し、ブロックを使用して応答を非同期的に処理し、コードの記述と理解が容易になるなど)
于 2012-09-12T21:48:09.440 に答える