1

このブロックメソッドを使用して、サーバーからデータをロードしています...

NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:[myString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]
                                            cachePolicy:NSURLRequestUseProtocolCachePolicy
                                        timeoutInterval:60.0];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection
 sendAsynchronousRequest:urlRequest
 queue:queue
 completionHandler: ^( NSURLResponse *response,
                      NSData *data,
                      NSError *error)
 {
     [[mySingleton dictionaryUserDetail] removeAllObjects];
     [[mySingleton arrayUserDetail] removeAllObjects];

     if ([data length] > 0 && error == nil) // no error and received data back
     {
         NSError* error;
         NSDictionary *myDic = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
         [mySingleton setDictionaryUserDetail:[myDic mutableCopy]];

         NSArray *myArray = [myDic objectForKey:@"searchResults"];
         [mySingleton setArrayUserDetail:[myArray mutableCopy]];

         dispatch_async(dispatch_get_main_queue(), ^{
             [self userDetailComplete];
         });
     } else if
         ([data length] == 0 && error == nil) // no error and did not receive data back
     {
         dispatch_async(dispatch_get_main_queue(), ^{
             [self serverError];
         });
     } else if
         (error != nil) // error
     {
         dispatch_async(dispatch_get_main_queue(), ^{
             [self serverError];
         });
     }
 }];

スピナーだけでなく、進行状況バーをユーザーに表示できるようにしたいと考えています。デリゲートを使用していた場合、NSURLConnectionDelegate を使用できたと思います

connection:didReceiveData:

しかし、ブロックでこれを行う方法がわかりません。天才的な洞察力を持っている人はいますか?

4

1 に答える 1

3

実際のダウンロードの進行状況を示すプログレス バーを表示する場合は、 のデリゲート ベースのメソッドを使用する必要がありますNSURLConnectionsendAsynchronousRequestそのためのメソッドを提供しsendSynchronousRequestません。

于 2013-04-06T18:09:11.263 に答える