ios - 使用 sendAsynchronousRequest :queue:completionHandler: 时显示 'data loading'

标签 ios networking delegates nsurlconnection objective-c-blocks

我正在使用这个 block 方法从服务器加载我的数据......

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];
         });
     }
 }];

我希望能够向用户显示进度条,而不仅仅是一个微调器。如果我使用委托(delegate)我假设我可以使用 NSURLConnectionDelegate
connection:didReceiveData:

但我不知道如何用 block 来做到这一点。有人有一些天才的见解吗?

最佳答案

如果你想显示一个显示实际下载进度的进度条,那么你必须使用 NSURLConnection 的基于委托(delegate)的方法。 . sendAsynchronousRequestsendSynchronousRequest不为此提供方法。

关于ios - 使用 sendAsynchronousRequest :queue:completionHandler: 时显示 'data loading',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15854129/

相关文章:

c# - 当委托(delegate)可以完成工作时,事件有什么用

ios - 在 superview 中限制水平和垂直居中会阻止我更改框架

c# - 如何从任何ip和任何端口接收UDP数据包?

c# - 是否有低级网络库来嗅探和更改网络流量?

networking - 检查文件夹是.NET中的本地资源还是网络资源

ios - 动画委托(delegate)未转换为 Swift 3.0

c# - 方法参数似乎是动态的,不确定它是如何工作的

iphone - iOS 应用程序是否可提取?

ios - 核心数据创建不持久的实体对象

ios - 使用 RealmSearchViewController 搜索多个属性