web-dev-qa-db-ja.com

AFNetworkingとjSON

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"
    }
]}

誰かがこれを行う方法を提案できますか.me物事がどのように行われるか。

16
Filip
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'

36
Susim Samanta

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);
}];
13
raed

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

[self registerHTTPOperationClass:[AFJSONRequestOperation class]];

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

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

4
Michael Mior

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

3
tilo

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

画像のダウンロードには、EGOCacheとEGOImageLoadingが適切な選択かもしれません https://github.com/enormego/EGOImageLoading

1
Wang Yandong

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

0
kernix

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

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

Sudo gem install cocoapods -V

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

次に実行します:

pod setup

CocoaPodsインストールをセットアップします。

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

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

touch Podfile
open -e Podfile

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

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機能にアクセスできます。

0
Placeholder