2012-05-11 7 views
6

Le richieste HTTP eseguite con NSURLConnection sono gestite da eventi. Ciò rende le cose un po 'strane quando è necessario emettere tre richieste una dopo l'altra, in cui ogni richiesta utilizza le informazioni restituite dalla precedente.Il modo migliore per inviare una serie di richieste HTTP con NSURLConnection

io sono abituato a farlo in questo modo:

response1 = request1(); 
response2 = request2(response1); 
response3 = request3(response2); 

Ma l'unico modo che ho trovato come fare questo con NSURLConnection è quello di avere connectionDidFinishLoading: fare la richiesta successiva. Ma quando il numero di richieste sequenziali aumenta, questo può diventare complicato.

Qual è il modo idiomatico di gestire le richieste HTTP sequenziali con il cacao?

risposta

7

È possibile racchiudere le richieste in una NSOperation e quindi definire le dipendenze dell'operazione, in modo che ciascuna richiesta debba attendere le sue richieste dipendenti prima dell'esecuzione.

Dal Apple Docs:

dipendenze sono un modo conveniente per effettuare operazioni in un ordine specifico. È possibile aggiungere e rimuovere le dipendenze per un'operazione utilizzando i metodi addDependency: removeDependency :. Per impostazione predefinita, un oggetto operazione con dipendenze non è considerato pronto fino a quando tutti gli oggetti operativi dipendenti non hanno completato l'esecuzione. Al termine dell'ultima operazione dipendente, tuttavia, l'oggetto operazione diventa pronto e può essere eseguito.

0

Si consiglia di utilizzare una libreria di terze parti denominata MKNetworkKit. Può gestire il duro lavoro per te, così puoi concentrarti sugli aspetti chiave della tua applicazione. Lo puoi trovare here.

Problemi correlati