Как создать индикатор выполнения NSURLConnection при загрузке файла?

Я хочу показать индикатор выполнения, когда происходит загрузка с NSURLConnection. Когда я получаю данные с сервера, я могу обновить интерфейс для каждого полученного пакета. Но проблема заключается в следующем: как я могу определить, сколько данных у меня уже есть, и сколько данных нужно загружать? Вероятно, в байтах … А потом мне нужно сделать некоторую математику, чтобы получить процент?

В вашем NSURLConnection выполните что-то подобное, чтобы узнать общую длину содержимого. Сервер должен поддерживать это, но он, скорее всего, отлично работает со статическим контентом:

 - (void)connection: (NSURLConnection*) connection didReceiveResponse: (NSHTTPURLResponse*) response { statusCode_ = [response statusCode]; if (statusCode_ == 200) { download_.size = [response expectedContentLength]; } } 

И затем обновите ход следующим образом:

 - (void) connection: (NSURLConnection*) connection didReceiveData: (NSData*) data { [data_ appendData: data]; download_.progress = ((float) [data_ length] / (float) download_.size); // Broadcast a notification with the progress change, or call a delegate } 

В моем случае у меня есть экземпляр загрузки, который имеет свойства size и progress . Они принадлежат глобальному объекту DownloadManager который будет заботиться об уведомлении заинтересованных сторон о ходе загрузки или изменениях состояния.

  • Как показать прогресс во время цикла занятости?
  • Отображать неопределенный JProgressBar при запуске командного файла
  • VB.NET progressbar backgroundworker
  • Как разместить текст на ProgressBar?
  • Запуск метода в BackGroundWorker и отображение ProgressBar
  • Индикатор выполнения загрузки файла с помощью jQuery
  • Давайте будем гением компьютера.