Windows Azure Mobile Servicesを使った「アルパカ牧場」のオンラインランキングデータを取得するWebAPIを公開しています。レスポンスデータのフォーマットはJSONです。
このAPIを使ってiOSでアルパカ牧場のラインキングデータを表示させてみましょう。
viewDidLoadメソッドにて、refreshメソッドを実行します。refreshメソッドでは、NSURLConnectionクラスを使って非同期的にJSONファイルをダウンロードします。
- (void)refresh { NSURL* url = [NSURL URLWithString:@"https://alpacabokujodata.azure-mobile.net/api/alpacaapi"]; [NSURLConnection sendAsynchronousRequest:[NSMutableURLRequest requestWithURL:url] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse* response, NSData* data, NSError* error) { [self didFinishedDownload:response data:data error:error]; }]; }
ネストが深くなるので、ダウンロードが完了した際の処理を分割しました。ダウンロードが完了すると、didFinishedDownload:data:error:メソッドが実行されます。
このメソッドの中では、ダウンロードしたJSONファイルをパースして、NSArrayクラスの配列に格納しなおしています。
- (void)didFinishedDownload:(NSURLResponse *)response data:(NSData *)data error:(NSError *)error { if (error) { return; } NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; if ([httpResponse statusCode] != 200) { return; } // ダウンロードしたJSONデータのパースする NSError* perseError = nil; id json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&perseError]; if (perseError) { return; } // ソートができるように配列をNSMutableArrayに詰め替えている NSMutableArray *contentArray = [NSMutableArray arrayWithArray:json]; }