Dove devo mettere i metodi che fanno una richiesta Http per ottenere dati da un servizio web nello sviluppo iOS?

9

Ho una Model Car nella mia applicazione iOS in cui i parametri come nome, anno, valore ecc vengono recuperati da un servizio Web per riempire un elenco di dati relativi alle automobili.

Dove devo inserire il metodo che va in modo asincrono al server e restituisce una serie di automobili (questo metodo converte già il JSON in un array Car)?

Il mio approccio attuale è un metodo statico nella mia classe Car che riceve un HttpClient (quindi sono in grado di testare l'unità deridendo il client) e restituisce un NSArray di macchine, è buono?

Che cosa avete fatto voi ragazzi in questa situazione?

Sono preoccupato perché recentemente ho iniziato a leggere un codice pulito che dice che una classe dovrebbe fare solo una cosa, e il modo in cui lo faccio ora sembra fare 2 cose (tenere informazioni su una macchina e ottenere un elenco di auto) .

    
posta Raphael Oliveira 21.08.2013 - 19:15
fonte

3 risposte

4

Suggerirei un oggetto CarBroker che gestisce le richieste per Auto e espone metodi come:

  1. getCars - per ottenere un elenco di tutte le auto.
  2. getCarByID - per una macchina specifica.

Inoltre, un tale oggetto può gestire la richiesta di altri broker automobilistici (se necessario). In entrambi i casi ha una vera area di responsabilità - Brokering Cars - al contrario di essere un oggetto Car con le responsabilità di un oggetto Car e di un Object Broker.

    
risposta data 28.08.2013 - 11:13
fonte
1

Qui mantenere un altro oggetto dovrebbe essere mantenuto da qualche parte, il che non può essere garantito che il genitore sarà sempre vivo per elaborare la risposta.

Suggerisco di mantenere queste implementazioni in una classe singleton. Mantenere questa classe sarà utile anche per alcune implementazioni di metodi generici che possono essere chiamate molto spesso.

    
risposta data 28.08.2013 - 23:07
fonte
-1

È possibile chiamare il metodo asincrono all'interno del metodo ViewDidLoad quando l'array ritorna dal web, aggiornare la vista. È possibile salvare l'array nel database, quindi non sarà necessario caricare i dati dal web ogni volta che viene caricato il Viewcontroller.

    
risposta data 04.09.2013 - 08:12
fonte

Leggi altre domande sui tag