NSData байтов для плавания - iPhone SDK - PullRequest
2 голосов
/ 26 октября 2010

Можно ли как-нибудь преобразовать значение [NSData bytes] в число с плавающей точкой, чтобы я мог добавить его в индикатор выполнения?

Спасибо

Kevin

1 Ответ

3 голосов
/ 26 октября 2010

В двух словах: [data length]

Вот фрагмент того, как работает панель загрузки, которую я использую.

// Can get called numerous times during download process
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
 // Accumulate incoming data into mutable data object
 [fileData appendData:data];
 byteCount += [data length];
 float progress = byteCount/(mapToDownload.fileSize);
 [self performSelectorOnMainThread:@selector(updateProgress:) withObject:[NSNumber numberWithFloat:progress] waitUntilDone:NO];
}

Дайте мне знать, если вам нужна дополнительная информация.

[Добавлено 26 октября для решения другого вопроса:]

Я не работал с NSStream.Мой пример взят из асинхронного примера NSURLConnection.Поэтому давайте проигнорируем мой предыдущий пример кода.

Вы упомянули, что у вас есть [NSData bytes].[NSData length] должен вернуть вам, сколько данных у вас есть.Предполагая, что вы знаете размер для загрузки, тогда:

float progressPercentage = [yourNSData length]/knownFileSize; 

должен дать вам процент, необходимый для обновления индикатора выполнения.Затем вы можете установить индикатор выполнения:

[yourProgressBar setProgress:progressPercentage];
...