Domanda

Sto cercando di fare qualche indicazione di progresso per quando provo a caricare e scaricare un file.

Ho letto e sembra che questo sia il metodo che devo usare.

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

Mi piacerebbe leggere di più su come funziona quella funzione (cioè quando viene chiamata ecc.), Ma non riesco a trovare la documentazione di riferimento. Sono andato a questo URL ma non dice nulla su quella particolare funzione.

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

Dove posso leggere di più al riguardo?

Grazie,
Tee

È stato utile?

Soluzione

NSURLConnection aveva un protocollo informale per il suo delegato. Questo è cambiato in iOS 5 (penso che lo stesso sia successo su OSX). Hanno deprecato i metodi dichiarati NSURLConnection e li ha spostati in protocolli formali NSURLConnectionDelegate e NSURLConnectionDataDelegate.

E ora la parte divertente. Hanno deprecato i metodi, li hanno persino rimossi dal NSURLConnection Documentazione ma non hanno documentato i nuovi protocolli formali. Attualmente, solo NSURLConnectionDelegate è documentato. NSURLConnectionDataDelegate non è menzionato da nessuna parte.

Esistono due modi su come trovare ciò che fa il metodo.

  1. Esaminare la versione precedente di NSURLConnection Docs (ad esempio iOS 4.3). Ti darei un link ma non riuscivo a trovarlo online. Forse hai scaricato la libreria nel tuo Xcode

  2. Premere CMD-shift-o in xcode, tipo NSURLConnectionDataDelegate e premere Invio. Hai trovato l'intestazione e i metodi hanno una descrizione lì:

    Connessione: DidSendBoodData: TotalBytesWitten: TotalByteSexpectedTowrite: viene chiamato durante un'operazione di caricamento per fornire un feedback di progresso. Si noti che i valori possono cambiare in modi imprevisti se la richiesta deve essere ritrasmessa.

Altri suggerimenti

Provare Afnetworking Sta andando a una sostituzione popolare di asihttprequest, se sei preoccupato per il supporto. Inoltre ha un supporto integrato per i progressi del download. (Vedi discussione su questo link.) Ecco una recente discussione su come usarlo effettivamente.

AGGIORNARE

Come tracciare il caricamento o scaricare progressi? (FAQ di Afnetworking)

AfurlConnectionOperation fornisce i metodi setuploadprogressblock: e setdownloadprogressblock:. Ogni metodo prende un singolo parametro, che è un blocco che verrà eseguito periodicamente durante la vita della richiesta. Il blocco non ha un tipo di restituzione e prende 3 argomenti: il numero di byte letti o scritti per questo callback, il numero totale di byte letti o scritti finora e il numero totale di byte che si prevede di essere letto o scritto.

Se si desidera aggiornare una barra di avanzamento, è possibile impostare il rispettivo blocco di avanzamento per impostare l'importo del progresso sul numero totale di byte lettura o scritta divisa per il numero previsto, normalizzato tra 0,0 e 1,0. Gli aggiornamenti dell'interfaccia utente in base a questo valore aggiorneranno in modo asincrono man mano che viene effettuata la richiesta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top