1

我一直在尝试下载图像/txt,但我需要这样做,直到该 url 存在并下载该图像/txt 文件,所以我继续再次调用相同的方法,当我设置调试点时,我看到了这个线程队列

如果 url 正确,我在调试导航器中看不到任何队列,因为它不再调用方法。我将 AFNetworking 库引用到相同的库,但我想它的工作方式与我在 NSURLSession 中的工作方式相同,对吧?

案例:-我检查 url 是否存在,所以如果它存在,则加载两个 url(time.txt 和 image.png),否则调用 WebService(XmlParser)并继续检查以下文件的 url。

时间.txt+图片.png

或者

再试一次.txt

显示存在者。

还检查了这个AFNetworking Question但它没有帮助,因为我不想添加操作数量。我想加载任何存在的文件。

因为在AFNetworking/NSURLSession中无论是成功还是失败都会完成操作。


-(无效)下载
{
 NSString *imageUrl = [NSString stringWithFormat:@"%@",txtNumber.text];
       
 NSURLSessionConfiguration *sessionConfig =[NSURLSessionConfiguration defaultSessionConfiguration];
        
 NSURLSession *session =[NSURLSession sessionWithConfiguration:sessionConfig
                                               代表:自己
                                          委托队列:无];
        
 NSURLSessionDownloadTask *getImageTask = [会话 downloadTaskWithURL:[NSURL URLWithString:imageUrl]
                        
                                  完成处理程序:^(NSURL *位置,
                                                      NSURLResponse *响应,
                                                      NSError *错误)
                        {
                           UIImage *downloadedImage =[UIImage imageWithData:[NSData dataWithContentsOfURL:location]];

                                      dispatch_async(dispatch_get_main_queue(), ^{
                                          // 用图像做事
                                          如果(下载图像)
                                          {
                                              carImgView.image = 下载图像;
                                              结果=真;
                                          }
                                          别的
                                          {
                                              结果=假;
                                              [自我再试一次];
                                          }
                                      });
                                  }];
        
        [getImageTask 恢复];
}
-(无效)再试一次
{
    NSString *strImg = [[NSString stringWithFormat:@"%@",gblPolicyNo] stringByAppendingString:FilePolStatus];
    
    NSString *apiImage = [NSString stringWithFormat:@"http://moviepoint.info/%@/%@",FolderPolStatus,strImg];
    
    NSURL *aImgUrl = [NSURL URLWithString:apiImage];
    // 2
    NSURLSessionConfiguration *sessionConfig =
    [NSURLSessionConfiguration defaultSessionConfiguration];
    
    // 3
    tryAgainSession =[NSURLSession sessionWithConfiguration:sessionConfig
                                           代表:自己
                                      委托队列:无];
    
    
    // 1
    getTryAgainTask = [tryAgainSession downloadTaskWithURL:aImgUrl
                    
                    
                              完成处理程序:^(NSURL *位置,
                                                  NSURLResponse *响应,
                                                  NSError *错误)
                    {
                        
                        // 2
                        UIImage *downloadedImage =[UIImage imageWithData:[NSData dataWithContentsOfURL:location]];
                        //3
                        dispatch_async(dispatch_get_main_queue(), ^{
                            // 用图像做事
                            如果(下载图像)
                            {
                                [policyImgWebView loadData:[NSData dataWithContentsOfURL:location] MIMEType:nil textEncodingName:nil baseURL:nil];
                                NSLog(@"是");
                            }
                            别的
                            {
                                NSLog(@"否");
                                [自我执行背景];
                            }
                        });
                    }];
    
    // 4
    [getTryAgainTask 恢复];
    
}

如果我做错了,请纠正我并帮助我解决这个问题。

4

1 回答 1

1

通过一个全局 NSURLSession 解决

于 2014-03-28T11:41:25.527 回答