2010-10-26 4 views
2

Есть ли способ преобразовать значение [NSData bytes] в float, чтобы я мог добавить его в индикатор выполнения?NSData Bytes to Float - iPhone SDK

Спасибо,

Kevin

ответ

3

В двух словах: [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]; 
+0

Каковы переменные fileData и byteCount? Я использую NSStreamOutput, когда получаю данные, поэтому я не использую appendData. Будет ли безопасно использовать его, когда у меня есть NSStreamOutput одновременно? – lab12

+0

Спасибо за новый ответ! – lab12

+0

Нет проблем. Рад, что это было полезно. – dredful