Какао: индикатор выполнения обновляется только до предпоследнего значения, а не окончательного - PullRequest
0 голосов
/ 18 ноября 2010

У меня есть индикатор выполнения с сопровождающей меткой на моем виде, и я пытаюсь отобразить ход загрузки файла.Вот мой код до сих пор

-(void)downloadXML {
    if(responseData == nil) {
        responseData = [[NSMutableData alloc] init];
    }

    progressView.progress = 0;

    NSString* updateURL = [NSString stringWithFormat:@"http://www.myserver.com/file.xml"];

    responseData = [[NSMutableData alloc] init];

    NSURLRequest* updateRequest = [NSURLRequest requestWithURL: [NSURL URLWithString:updateURL]];
    NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:updateRequest delegate:self];
    [connection start];
}


- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    [responseData setLength:0];
    filesize = [[NSNumber numberWithLong: [response expectedContentLength] ] retain];
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [responseData appendData:data];

    NSNumber* curLength = [NSNumber numberWithLong:[responseData length] ];
    float progress = [curLength floatValue] / [filesize floatValue] ;

    NSString *labelText = [NSString stringWithFormat:@"Downloading file: %@%", domicile, progress];

        progressView.progress = progress;
    progressLabel.text = labelText;

    NSLog(@"File Size: %f, Download Progress: %f", [filesize floatValue], progress);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
    progressView.progress = 0;
    [filesize release];
    [connection release];

}

Фактическая загрузка работает нормально, но индикатор выполнения и метка, кажется, не работают должным образом.Вывод консоли выглядит примерно так, что показывает, что файл загружается правильно.

2010-11-18 15:46:51.141 Fund Prices[8096:207] File Size: 1300.000000, Download Progress: 0.318615
2010-11-18 15:46:51.141 Fund Prices[8096:207] File Size: 1300.000000, Download Progress: 0.427615
2010-11-18 15:46:51.141 Fund Prices[8096:207] File Size: 1300.000000, Download Progress: 0.651215
2010-11-18 15:46:51.274 Fund Prices[8096:207] File Size: 1300.000000, Download Progress: 1.000000

Однако индикатор выполнения и метка обновляются только до предпоследнего значения.т. е. полоса переместится чуть более чем на половину, а метка обновится до 0,651215.

Есть ли причина, по которой окончательное значение не отправляется обоим элементам?

1 Ответ

0 голосов
/ 18 ноября 2010

-connectionDidFinishLoading: может быть отправлено до последнего -connection:didRecieveData: сообщения.Я бы взломал -connectionDidFinishLoading: и проверил.

...