0

現在の iOS アプリでは、アプリがアクティブになったときにいくつかのネットワーク操作を実行する必要があります (ユーザーが専用タブをクリックしたときにクエリを実行するよりも、すべてを一度に取得したいのです)。アプリがフォアグラウンドに移動し、その中のすべてのネットワークを処理するときに表示される UIViewController を使用しています。
それはそれを行うための推奨される方法ですか?

発行する必要があるリクエストは次のようなものです。

request1
   if result1
      request2
         request3
   else if result2
      request4
         request3

スパゲッティ コードを回避するために、これらのようなチェーン リクエストを有効にするライブラリはありますか? 私は ASIHttpRequest を使用していますが、それを実行する良い方法が見つかりませんでした (キューを使用しても)。

4

2 に答える 2

2

UIViewControllerあなたがある種の「読み込み」であると仮定すると、それは何も悪いことではありません。おそらく、それを処理するより良い方法は、NSObjectサブクラスを作成し、それでネットワーク操作を処理するApplicationDidBecomeActive:ことです.

于 2012-02-06T20:46:27.413 に答える
2

AFNetworking 0.9 では、リクエストをバッチ処理する機能が追加されました。AFHTTPCLient -enqueueBatchOfHTTPRequestOperationsWithRequests:progressBlock:completionBlock:一連の操作をキューに入れます。各操作が終了すると、通常のように独自のプロセスが開始completionBlockされ、完了したリクエストの数を示す進行状況ブロックが発生します。次に、すべてが完了すると、最後の完了ブロックが実行されます。

したがって、あなたの場合、次のように簡単になります。

[someClient enqueueBatchOfHTTPRequestOperationsWithRequests:[NSArray arrayWithObjects:request1, request2, request3, request4, nil] progressBlock:nil completionBlock:(controller logic here)];

于 2012-02-07T16:07:54.150 に答える