ASINetworkQueue有些图像下载失败

时间:2011-10-30 18:36:35

标签: ios asihttprequest

我正在通过ASINetworkQueue下载一堆图片。我在模拟器中没有问题,但在iPad上没有下载一些图像(每次它们不同)。我该如何解决这个问题?

以下是代码:

队列创建:

if (addedPaintings > 0) {
            [currentPaintingsArray addObjectsFromArray:objectsToAdd];
            [unseenPaintings addObjectsFromArray:objectsToAdd];
            [self downloadImages];
        }
        // update plist file if data was altered.
        if (addedPaintings > 0 || removedPaintings > 0)
            [currentPaintingsArray writeToFile:dataFilePath atomically:YES];
        else
            [self completeSync:request.responseStatusCode];
}

图像下载方法:

- (void) downloadImages {
    [networkQueue reset];
    [networkQueue setDelegate:self];
    [networkQueue setShowAccurateProgress:YES];
    [networkQueue setDownloadProgressDelegate:self.progressView.customView];
    [networkQueue setQueueDidFinishSelector:@selector(imageQueueDownloadComplete:)];

    for (NSDictionary *dict in [Globals sharedGlobals].unseenPaintings) {       
        NSString *link = [dict objectForKey:@"link"];
        NSString *smallLink = [dict objectForKey:@"smallLink"];
        if ([link length] != 0) {
            NSURL *url = [NSURL URLWithString:[[URL stringByAppendingString:GALLERY] stringByAppendingString: link]];
            ASIHTTPRequest *downloadRequest = [[ASIHTTPRequest alloc] initWithURL:url];
            [downloadRequest setDownloadDestinationPath:[documentsDirectory stringByAppendingPathComponent:link]];
            [downloadRequest setDidFailSelector:@selector(imageDownloadFailed:)];
            [downloadRequest setDidFinishSelector:@selector(imageDownloadComplete:)];
            [downloadRequest setUserInfo:dict];
            [downloadRequest setDelegate:self];
            [networkQueue addOperation:downloadRequest];
            [downloadRequest release];

            NSURL *urlCarousel = [NSURL URLWithString:[[URL stringByAppendingString:WS_IMAGES] stringByAppendingString: smallLink]];
            downloadRequest = [[ASIHTTPRequest alloc] initWithURL:urlCarousel];
            [downloadRequest setDownloadDestinationPath:[documentsDirectory stringByAppendingPathComponent:smallLink]];
            [downloadRequest setDidFailSelector:@selector(imageDownloadFailed:)];
            [downloadRequest setUserInfo:dict];
            [downloadRequest setDelegate:self];
            [networkQueue addOperation:downloadRequest];
            [downloadRequest release];
        }
    }
    [networkQueue go];
}

1 个答案:

答案 0 :(得分:0)

根据您留给问题的评论,(具体来说:Also, if I change the download method from networkQueue to [downloadRequest startAsynchronous], everything works.)可能是您的请求在同步运行时超时。

您应该知道的另一件事是不再维护“ASI网络类”。开发人员提供了几种替代方案in his blog post announcing the end-of-life of that software