2010-10-26 4 views

Répondre

3

En bref: [data length]

Voici l'extrait de la façon dont la barre de téléchargement que j'utilise des œuvres.

// 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]; 
} 

Faites-moi savoir si vous avez besoin de plus d'informations.

[Ajouté le 26 octobre pour répondre à vos autres questions:]

Je n'ai pas travaillé avec NSStream. Mon exemple provient d'un exemple NSURLConnection asynchrone. Par conséquent, ignorons mon exemple de code précédent.

Vous avez mentionné que vous avez [NSData bytes]. [NSData length] devrait vous renvoyer combien de données vous avez. En supposant que vous connaissez la taille à télécharger puis:

float progressPercentage = [yourNSData length]/knownFileSize; 

devrait vous donner le pourcentage nécessaire pour mettre à jour la barre de progression. Vous pouvez ensuite définir votre barre de progression:

[yourProgressBar setProgress:progressPercentage]; 
+0

Quelles sont les variables fileData et byteCount? J'utilise un NSStreamOutput quand je reçois les données, donc je n'utilise pas appendData. Serait-il toujours prudent d'envisager de l'utiliser quand j'ai NSStreamOutput en même temps? – lab12

+0

Merci pour la nouvelle réponse! – lab12

+0

Aucun prob. Heureux que c'était utile. – dredful