Qual è il modo corretto di memorizzare un oggetto con molti attributi in Objective-C?

2

Ho un oggetto che sto scaricando su HTTP, che ha circa 50 attributi. Qual è il modo corretto di memorizzare queste informazioni in Objective-C? Dovrei avere un NSObject con una proprietà per ogni attributo (se sì, quale sarebbe un buon modo per inizializzare questo oggetto?)? Dovrei usare un NSDictionary con 50 coppie chiave-valore?

    
posta Lenny K 09.08.2013 - 20:57
fonte

4 risposte

3

Probabilmente userò un NSDictionary. Il codice sarà probabilmente più pulito e amp; più facile da mantenere. Se ottieni un attributo imprevisto, ti arresterai in modo anomalo se non ne definisci una proprietà.

    
risposta data 09.08.2013 - 23:00
fonte
2

Come suggerito da Mike, un NSDictionary è un modo semplice per memorizzare rapidamente una tonnellata di coppie chiave / valore. Lo svantaggio di questo approccio è la perdita della comodità di accesso dopo il fatto. Devi ricordare che cosa era ogni chiave per accedere a qualsiasi valore. Ciò può significare tornare all'API del servizio Web o alla risposta JSON per ottenere la chiave necessaria. Inoltre non ottieni alcun aiuto dal compilatore.

D'altra parte, la creazione di una sottoclasse NSObject con proprietà per ogni coppia chiave / valore ti dà tutta la comodità, ma ci vuole tempo per analizzare i valori, specialmente con tutti quelli di cui stai parlando. Generalmente utilizzo l'approccio della sottoclasse perché mi piace la comodità di avere la guida del compilatore con il completamento automatico e la verifica del tipo. È anche possibile determinare quali proprietà sono di lettura / scrittura e quali sono di sola lettura. Aggiungo un initWithDictionary: metodo per creare la sottoclasse e analizzare la risposta JSON all'interno di quel metodo. Questo tipo di aiuto allontana il modello di dati dall'applicazione stessa

    
risposta data 10.08.2013 - 21:27
fonte
0

Come penso sia meglio creare un oggetto di classe e utilizzare proprietà per memorizzare gli attributi perché è possibile memorizzare anche valori NULL invece di NSDictionary .
In NSDictionary devi verificare il valore NULL prima di inserirlo in esso.

Class object è molto più pulito, più comprensibile e più facile da eseguire il debug dei valori durante il tempo di debug.

Class objects differenziare in bianco e nero ogni tipo di dati di proprietà.

    
risposta data 19.08.2013 - 10:55
fonte
0

Entrambi. Proprietà in un oggetto modello per un accesso efficiente e una guida per il controllo del compilatore. E un dizionario per gli attributi di uso, overflow e / o non riconosciuti nuovi (o errati), rendendo più semplice disaccoppiare le modifiche ai dati di download e alle app client sul campo, senza causare blocchi o sballottamenti dei dati che potrebbero essere necessari più avanti nel strada, o per il debug.

    
risposta data 24.08.2013 - 08:05
fonte

Leggi altre domande sui tag