Devo creare classi specifiche per oggetti JSON o utilizzare solo il contenitore (Array / Dizionario) per accedere ai dati?

1

Uso Foursquare per ottenere un elenco di ristoranti nelle vicinanze all'interno di un'app iOS. Il risultato è memorizzato in una matrice che consiste in dizionari e riguardo alla profondità dei dati, ogni dizionario contiene anche una matrice con dizionari e così via. Il risultato dovrebbe essere mostrato all'interno di UITableView. Dovrei creare una classe che rappresenta un ristorante e quindi creare un'istanza per ogni ristorante che inserisco in una matrice e utilizzarla come origine dati per il mio UITableView o dovrei usare l'array completo che ho ottenuto la prima volta. Penso che l'utilizzo di una matrice con una classe dedicata del ristorante renderebbe la gestione molto più semplice, ma forse ci sono dei motivi per non farlo in questo modo? Prestazioni forse?

    
posta twickl 15.07.2012 - 17:53
fonte

2 risposte

3

Vorrei andare con classi specifiche - sarà molto più facile scrivere test unitari e mantenere il codice anche se perdi un po 'di prestazioni. Non è un posto dove preferisci le prestazioni per chiarezza.

    
risposta data 16.07.2012 - 11:05
fonte
1

Non sono stato in programmazione iOS da molto tempo, quindi controlla la mia risposta.

La mia regola empirica: crea una classe quando vuoi incapsulare una certa funzionalità . Se si desidera un oggetto ristorante "intelligente" (alcune logiche di business, convalida, campi calcolati), è necessario creare tale classe. Per seguire le convenzioni Apple, è necessario implementare il protocollo NSCoding che trasferisce i campi di classe ae da Dizionari e utilizzare un serializzatore JSON in grado di trasformare gli oggetti standard nel file JSON in istanze di Restaurant utilizzando il codice. Sembra una soluzione "strong", ma ha i suoi difetti.

iOS è orientato allo schermo (logica di business nei controller di visualizzazione) e trascorrerai molto tempo a scrivere che NSCoding funziona solo per utilizzare i ristoranti anziché i dizionari dietro le funzioni di callback di UITableViewDataSource (che dovrai scrivere lo stesso modo in entrambi i casi).

Quindi, in un semplice caso di "prova del concetto", raccomanderei di non giocare molto con NSCoding, Restaurant e altre cose, ma usando il NSArray dei dizionari che provengono dal JSON. Soprattutto non per le prestazioni di runtime, ma la quantità di tempo di programmazione, la complessità del codice e gli errori possibili. Puoi passare all'utilizzo di corsi dedicati se davvero devi: se usare i dizionari potrebbe rendere il tuo codice scomodo.

    
risposta data 16.07.2012 - 09:21
fonte

Leggi altre domande sui tag