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物事がどのように行われるか。
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'
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);
}];
AFNetworkingでJSONを解析するには、サブクラスを作成し、初期化中に以下を追加します。
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
次に、GET:parameters:completion:
などのメソッドを呼び出すと、NSDictionary
パラメータとしてresponse
を使用して完了ブロックが呼び出されます(JSONが有効であると想定)。
画像をダウンロードするには、表示したい場合は IImageView + AFNetworking を確認してください。
AFNetworkingの例を確認してください https://github.com/AFNetworking/AFNetworking/tree/master/Example
画像のダウンロードには、EGOCacheとEGOImageLoadingが適切な選択かもしれません https://github.com/enormego/EGOImageLoading
JSONModel を使用して、jsonをオブジェクトに解析します。
まず、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機能にアクセスできます。