Question

J'essaie de faire une indication de progrès pour essayer de télécharger et de télécharger un fichier.

J'ai lu et on dirait que c'est la méthode que je dois utiliser.

- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite

Je voudrais en savoir plus sur le fonctionnement de cette fonction (c'est-à-dire quand s'appelle-t-il, etc.), mais je n'arrive pas à trouver la documentation de référence. Je suis allé à cette URL mais cela ne dit rien sur cette fonction particulière.

https://developer.apple.com/library/mac/#documentation/foundation/reference/nsurlconnectiondelegate_protocol/reference/reference.html%23//apple_ref/occ/intf/nsurlconnectiondegate

Où puis-je en savoir plus à ce sujet?

Merci,
Tee

Était-ce utile?

La solution

NSURLConnection avait un protocole informel pour son délégué. Cela a changé dans iOS 5 (je pense que la même chose s'est produite sur OSX). Ils ont obsolète les méthodes déclarées dans NSURLConnection et les a déplacés dans des protocoles formels NSURLConnectionDelegate et NSURLConnectionDataDelegate.

Et maintenant la partie amusante. Ils ont obsolète les méthodes, ils les ont même supprimés du NSURLConnection Documentation mais ils n'ont pas documenté les nouveaux protocoles formels. Actuellement, seulement NSURLConnectionDelegate est documenté. NSURLConnectionDataDelegate n'est mentionné nulle part.

Il existe deux façons de trouver ce que fait la méthode.

  1. Recherchez la version précédente de NSURLConnection Docs (par exemple iOS 4.3). Je vous donnerais un lien mais je n'ai pas pu le trouver en ligne. Peut-être que la bibliothèque est téléchargée dans votre Xcode

  2. Appuyez sur CMD-Shift-O dans Xcode, Type NSURLConnectionDataDelegate et appuyez sur Entrée. Vous avez trouvé l'en-tête et les méthodes ont une description là-bas:

    Connexion: DidSendBodyData: TotalBytesWritten: TotalByteSExpectedTowrite: est appelé lors d'une opération de téléchargement pour fournir des commentaires de progression. Notez que les valeurs peuvent changer de manière inattendue si la demande doit être retransmis.

Autres conseils

Essayer Afnetworking C'est un remplacement populaire d'Asihttprequest, si vous êtes préoccupé par le soutien. Il a également une prise en charge intégrée pour les progrès du téléchargement. (Voir la discussion sur ce lien.) Voici une discussion récente sur la façon de l'utiliser réellement.

METTRE À JOUR

Comment suivre les progrès du téléchargement ou du téléchargement? (FAQ AFNetworking)

AfurlConnectionOperation fournit les méthodes SetUploadProgressBlock: et SetdownloadProgressBlock:. Chaque méthode prend un seul paramètre, qui est un bloc qui sera exécuté périodiquement au cours de la durée de vie de la demande. Le bloc n'a pas de type de retour et prend 3 arguments: le nombre d'octets lus ou écrits pour ce rappel, le nombre total d'octets lus ou écrits jusqu'à présent, et le nombre total d'octets qui devraient être lus ou écrits.

Si vous vouliez mettre à jour une barre de progression, vous pouvez définir le bloc de progression respectif pour définir le montant de progrès à des octets de nombre total lus ou écrits divisés par le nombre attendu, normalisés entre 0,0 et 1,0. Les mises à jour de l'interface utilisateur basées sur cette valeur mettra à jour de manière asynchrone lors de la demande.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top