2010-02-05 7 views
0

Я хотел бы показать индикатор выполнения, показывающий, какая часть файла была загружена в моем приложении для iPhone. Я знаю, как настроить UIProgressView в IB и все такое. Но для этого мне нужны данные, такие как размер файла в байтах. Как мне интегрировать такую ​​функциональность с моим байтовым кодом загрузки (см. Ниже)?Как показать UIProgressView для загрузки в моем приложении?

- (void)connection:(NSURLConnection *)theConnection didReceiveData:(NSData *)data 
// A delegate method called by the NSURLConnection as data arrives. We just 
// write the data to the file. 
{ 
#pragma unused(theConnection) 
    NSInteger  dataLength; 
    const uint8_t * dataBytes; 
    NSInteger  bytesWritten; 
    NSInteger  bytesWrittenSoFar; 

    assert(theConnection == self.connection); 

    dataLength = [data length]; 
    dataBytes = [data bytes]; 

    bytesWrittenSoFar = 0; 
    do { 
     bytesWritten = [self.fileStream write:&dataBytes[bytesWrittenSoFar] maxLength:dataLength - bytesWrittenSoFar]; 
     assert(bytesWritten != 0); 
     if (bytesWritten == -1) { 
      [self _stopReceiveWithStatus:@"File write error"]; 
      break; 
     } else { 
      bytesWrittenSoFar += bytesWritten; 

     } 
    } while (bytesWrittenSoFar != dataLength); 
} 

ответ

2

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

Я действительно рекомендую вам хотя бы проверить это. Это делает этот материал очень простым на iPhone, и я использую его для всех своих приложений. Он будет выполнять синхронные и асинхронные подключения, имеет дело с куки-файлами и аутентификацией, а также упрощает составление запросов POST. Он также имеет встроенную сетевую очередь.

http://allseeing-i.com/ASIHTTPRequest/

+0

Naaaah ... У меня есть мои вещи уже настроили mostly..Don't хочет пойти туда снова и начать изменять вещи. Спасибо, хотя ... Есть ли способ получить размер файла на сервере (в байтах)? Таким образом, я могу использовать UIProgressView – RexOnRoids