Ошибка при отображении прогресса загрузки файла с NSURLSessionDataTask в цель c - PullRequest
1 голос
/ 23 апреля 2020

Я пытаюсь показать прогресс загрузки, а также на ярлыке в моем приложении. Код в объективе c. Но я получаю отрицательное значение прогресса. Пожалуйста, помогите мне решить проблему. Пожалуйста, посмотрите на мой код и вывод, я упомянул ниже. Мой код:

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler {
    completionHandler(NSURLSessionResponseAllow);

    dispatch_async(dispatch_get_main_queue(), ^{

        float progress = 0.0f;
        [self.progressView setProgress:progress animated:YES];
        self.lblProgressCount.text = [NSString stringWithFormat:@"%.0f%%",progress*100];
        NSLog(@"%@",[NSString stringWithFormat:@"%.0f",progress*100]);

    });

    _downloadSize=[response expectedContentLength];
}

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {

    if(!_dataToDownload){

        _dataToDownload=[[NSMutableData alloc]init];

    }

    [_dataToDownload appendData:data];

    float progress = [ _dataToDownload length ]/_downloadSize;

    NSLog(@"_downloadSize is: %f",_downloadSize);
    NSLog(@"_dataToDownload.length is: %lu",(unsigned long)[ 
        _dataToDownload length ]);
    NSLog(@"progress  : %f",progress);
    NSLog(@"progress is : %@",[NSString 
        stringWithFormat:@"%.0f",progress*100]);

    dispatch_async(dispatch_get_main_queue(), ^{

        [self.progressView setProgress:progress animated:YES];
        self.lblProgressCount.text = [NSString stringWithFormat:@"%.0f%%",progress*100];

    });

}

Я получаю вывод как: -

_downloadSize is: -1.000000
_dataToDownload.length is: 9321
 progress  : -9321.000000
 progress is : -932100

_downloadSize is: -1.000000
_dataToDownload.length is: 15352
 progress  : -15352.000000
 progress is : -1535200
...