3

iOS で JSON リクエストを作成するチュートリアルをいくつか見ましたが、その多くは NSURLConnection を使用して次のようなものをリストしています。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    [self.responseData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [self.responseData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    NSLog([NSString stringWithFormat:@"Connection failed: %@", [error description]]);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {}

しかし、私は今日別のチュートリアル ( http://mobile.tutsplus.com/tutorials/iphone/ios-quick-tip-interacting-with-web-services/ ) を読みました。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
    NSError *error = nil;
    NSURL *url = [NSURL URLWithString:@"http://brandontreb.com/apps/pocket-mud-pro/promo.json"];
    NSString *json = [NSString stringWithContentsOfURL:url
                                              encoding:NSASCIIStringEncoding
                                                 error:&error];
    NSLog(@"\nJSON: %@ \n Error: %@", json, error);
});

どちらを使用するのが良いでしょうか?後者の単純さに本質的に間違っているものはありますか?

4

2 に答える 2

7

使用に「問題」はありませんstringWithContentsOfURL:encoding:error:が、進行中のリクエストを処理する方法に柔軟性はありません。次のいずれかを行う必要がある場合は、次を使用しますNSURLConnection

  1. リクエスト中に完了率をユーザーに表示する
  2. HTTP 認証を必要とするホストへのリクエストを実行する
  3. より複雑なデータ処理 (例: Web サービスからの典型的な JSON 応答よりも多くのデータのダウンロード) で、応答をチャンクで処理したい場合
  4. リクエストをキャンセルします (@martin に感謝)
于 2013-03-23T20:21:31.107 に答える
1

最初のものを使用してください。接続が終了したことを通知するメソッドがあります。次に、別のメソッドを実行して、データまたはデータを使用して実行する予定のデータを表示できます。

于 2013-03-23T20:20:18.037 に答える