16

WebサービスAPIからのjson応答をフォローしています。jsonから製品データを抽出したい。また、AFNetworkingを使用してこれを実装したいと思います。

 {"products": [
    {
      "product_id": "1170",
      "name": "zzzz®",
      "sort_order": 0,
      "brand": "zzzas",
      "product_category_id": "1090",
      "location_ids": [
        "1078"
      ],
      "icon_url": "http://zzzzz.com/media/2502/zzzz.png",
      "icon_date": "Wed, 07 Nov 2012 14:03:47 GMT",
      "thumbnail_url": "http://zzzz.com/media/2591/zzdfs.png",
      "thumbnail_date": "Wed, 07 Nov 2012 14:04:02 GMT"
    },
    {
      "product_id": "1126",
      "name": "ddddd®",
      "sort_order": 1,
      "brand": "dddsas",
      "product_category_id": "1110",
      "location_ids": [
        "1095"
      ],
      "icon_url": "http://zzzzz.com/media/2507/ddddd.png",
      "icon_date": "Wed, 07 Nov 2012 14:03:48 GMT",
      "thumbnail_url": "http://zzzzz.com/media/2596/sssds.png",
      "thumbnail_date": "Wed, 07 Nov 2012 14:04:05 GMT"
    }
]}

.誰かが私にこれを行う方法を提案できますか?

4

7 に答える 7

36
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"link"]];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
    success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
        NSDictionary *jsonDict = (NSDictionary *) JSON;
        NSArray *products = [jsonDict objectForKey:@"products"];
        [products enumerateObjectsUsingBlock:^(id obj,NSUInteger idx, BOOL *stop){
            NSString *productIconUrl = [obj objectForKey:@"icon_url"];
        }];

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response,
        NSError *error, id JSON) {
            NSLog(@"Request Failure Because %@",[error userInfo]); 
    }
];

[operation start];

これを試して。

アップデート1:このhttps://github.com/SSamanta/SSRestClientを試すことができます

アップデート2:https ://github.com/SSamanta/SSHTTPClient (Swiftを使用)

利用可能なポッド: pod 'SSHTTPClient', '~>1.2.2'

于 2012-11-20T13:34:47.843 に答える
13

AFNetworking 3.0を使用AFJSONRequestOperationしていて、もう存在しない場合は、次を使用する必要がありますAFHTTPSessionManager

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:@"http://example.com/resources.json" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];
于 2016-01-06T20:50:54.300 に答える
4

AFNetworkingを使用してJSONを解析するには、サブクラスを作成し、初期化中に以下を追加するだけです。

[self registerHTTPOperationClass:[AFJSONRequestOperation class]];

次に、のようなメソッドを呼び出すと、パラメーターとしてasを使用GET:parameters:completion:して完了ブロックが呼び出されます(JSONが有効であると想定)。NSDictionaryresponse

画像をダウンロードするには、画像を表示したい場合は、UIImageView+AFNetworkingを確認してください。

于 2012-11-20T13:31:35.613 に答える
3

始めたばかりの場合は、このタスクにRestKitを使用することをお勧めします(AFNetworkingを使用します)。こちらの例をご覧ください。

于 2012-11-20T13:20:44.010 に答える
1

AFNetworkingの例を確認してください https://github.com/AFNetworking/AFNetworking/tree/master/Example

画像のダウンロードには、EGOCacheとEGOImageLoadingが適している場合があり ますhttps://github.com/enormego/EGOImageLoading

于 2012-11-20T13:39:07.377 に答える
0

JSONModelを使用して、jsonをオブジェクトに解析します。

于 2013-12-13T06:50:02.853 に答える
0

まず、AFNetworkingを実行するには、まず「CocoaPods」をインストールする必要があります。これは何ですか?CocoaPodsはObjective-Cの依存関係マネージャーであり、サードパーティライブラリをAFNetworkingとしてはるかに高速かつ安全にインストールできます。これはRubyGemとして提供されており、次の方法でインストールできます。

ターミナルを開き、次のコマンドを実行します。

sudo gem install cocoapods -V

我慢して。このコマンドは完了するまでに時間がかかる場合があるため、「-V」オプションを使用すると、何が起こっているかについての詳細なデータが提供されます。

次に、以下を実行します。

pod setup

これでCocoaPodsのインストールがセットアップされます。

次に、CocoaPodsの構成ファイルとしてサーバーとなるPodFileを作成する必要があります。

ターミナルに戻り、次のコマンドを記述します。

touch Podfile
open -e Podfile

最初のコマンドは、Unixタッチエディタで「Podfile」という名前のファイルを作成します。2行目は、この新しく作成されたファイルを編集用に開きます。これで、空のテキストエディットウィンドウが開いたはずです。次に、このファイル内に以下を貼り付けます。

platform :ios, '7.0'
pod "AFNetworking", "~> 2.0"

次に、Cocoaの作業環境をセットアップします。重要:ターミナルで「cd」コマンドを使用して、XCODEプロジェクトの現在のディレクトリにあるターミナルでディレクトリを変更してください。例:

cd /user/xcode/myproject

適切なディレクトリにいることを確認したら、次のターミナルコマンドを実行します。

pod setup

次に、次のように記述して、プロジェクトへの依存関係をインストールします。

pod install

これは重要な注意事項です。以前は現在のXcodeプロジェクト内になかったプロジェクトをインストールしようとしているため、現在のXcodeプロジェクトのワークスペースを作成する必要があります(まだ作成していない場合)。ワークスペースを作成するにはXcodeプロジェクトの場合、次のようにします。

File > Save Workspace

完了したら、Xcodeワークスペースファイルのディレクトリに移動し、次のコマンドを実行します。

open YourProjectName.xcworkspace

これで、任意のファイルの先頭で「インポート」を使用して、AFNetworkingの組み込みAPI機能にアクセスできます。

于 2014-07-28T13:52:58.040 に答える