0

次のコードを考えると、サービスに接続していくつかのアイテムをフェッチするとします。アイテムが「処理」されている間、進行状況を表示するためにラベルを更新する必要があります。

問題は、操作がメイン スレッドをブロックし、UILabel がすべての項目を反復した後にのみ更新されることです。

毎回更新されるように、このコードを修正するにはどうすればよいですか?

AFJSONRequestOperation *operation = 
[AFJSONRequestOperationJSONRequestOperationWithRequest:request 
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON)
{
   datas = [JSON valueForKeyPath:@"data"];
   for(int i = 0; i < [datas count]; i ++)
   {
       //do stuff with the item

       NSMutableString *progressText = [[NSMutableString alloc] 
            initWithFormat:@"Done with %d out of  %@ items", i, [datas count]];
       self.progressLabel.text = progressText;
   }
 }];

 [operation start]
4

1 に答える 1

0

この種の json データに対する http リクエストは、一度だけ応答を取得し、「JSON」オブジェクト内のすべてのデータを取得できます。したがって、進捗状況を示す必要はありません。リクエストが複数のレスポンスを受け取る場合にのみ、進行状況を表示する必要があります。たとえば、webview のリクエストです。

于 2013-04-03T06:05:54.150 に答える