Загружаю zip файл в папку в моем приложении. Наблюдаю за прогрессом загрузки от 1% до 100% в моем label. После того, как label = 100% я не нахожу файл в папке. Он появляется спустя 50 секунд. Как я могу постоянно проверять наличие файла в течение 50 секунд, чтобы точно знать кода он появится в папке?
код загрузки
-(IBAction) downloadButton:(id)sender
{
if (_HighScore == 2) {
_url1 =[NSURL URLWithString:@"link2.zip"];
_downloadTask1 = [_session downloadTaskWithURL:_url1];
[_downloadTask1 resume];
}
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
{
if (downloadTask == _downloadTask1) {
_documentsDirectory1 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
_zipPath1 = [_documentsDirectory1 stringByAppendingPathComponent:@"2.zip"];
}
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
if (downloadTask == _downloadTask1) { NSData *urlData1 = [NSData dataWithContentsOfURL:_url1]; [urlData1 writeToFile:_zipPath1 atomically:YES];}
});
}
UPD
_documentsDirectory1 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
_zipPath1 = [_documentsDirectory1 stringByAppendingPathComponent:@"2.zip"];
_destinationPath1 = [_documentsDirectory1 stringByAppendingPathComponent:@"MediaData"];
_fileExists1 = [[NSFileManager defaultManager] fileExistsAtPath:_zipPath1 isDirectory:false];
if( [SSZipArchive unzipFileAtPath:_zipPath1 toDestination:_destinationPath1] != NO ) {
NSLog(@"Dilip Success");
}else{
NSLog(@"Dilip Error");
}
Ответ
как уже написал в комментарии, у вас скачивание происходит два раза - первый вы скачиваете через NSSession, и когда он закончил скачивать и выполнил
- (void)URLSession: downloadTask: didFinishDownloadingToURL:
вы скачиваете еще раз используя
[NSData dataWithContentsOfURL:_url1]
Что вам надо делать, в didFinishDownloadingToURL просто смотреть куда файл скачан и его оттуда брать. типа такого:
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSURL *documentsFolder = [paths objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *newLocation = [NSURL URLWithString:[NSString stringWithFormat:@"file://%@/myCoolFile.txt", documentsFolder]];
NSError *error;
[fileManager copyItemAtURL:location toURL:newLocation error:&error];
}
Комментариев нет:
Отправить комментарий