Dati principali iOS e NSUserDefaults

3

Sto creando un'app in cui gli utenti possono cercare elementi da un'API esterna. Se agli utenti piace un articolo, possono memorizzarli nella loro "lista dei preferiti" personale.

La mia domanda è, è una buona pratica salvare questi dati come parte dei dati di base o NSUserDefault. Attualmente i dati sono memorizzati nel mio database. Ogni volta che l'utente tenta di accedere alla loro lista dei preferiti devo fare un comando HTTP per recuperare i dati dal database.

Questo processo è lento, quindi voglio salvare i dati dell'elenco preferiti in dati di base o NSUserDefault. È un buon approccio.

Tenere presente che l'elenco potrebbe crescere rapidamente, dipende dagli utenti.

È una buona idea memorizzare grandi quantità di dati nei dati di base o UserDefault?

    
posta Lorenzo von Matterhorn 18.09.2015 - 15:01
fonte

2 risposte

1

Is it a good idea to store large amount of data in core data or UserDefault.

Voterò per "lasciare il lato server".

Un vantaggio nell'archiviazione del lato server dati è che ottieni gli stessi preferiti sia che tu stia effettuando la connessione dal tuo telefono o tablet.

Quando ero solito programmare per i dispositivi mobili, tendevo a considerare l'intero dispositivo come un livello di presentazione. Ad esempio, se avessi 1.000 "preferiti", potrei inviare solo un paio di centinaia di nomi preferiti nella chiamata HTTP iniziale.

Mentre scorri, invierei altri nomi. Non vorrei mandare giù i dettagli finché non hai smesso di scorrere per un secondo o in realtà hai selezionato un singolo preferito da visualizzare. (Se hai smesso di scorrere potrei scaricare i dettagli per la dozzina di preferiti attualmente visibili sullo schermo).

Naturalmente, funziona solo se si dispone di una connessione di rete affidabile. Se devi funzionare offline, l'unica scelta è quella di memorizzare i dati localmente, probabilmente nei dati core.

    
risposta data 18.09.2015 - 16:23
fonte
3

Per rispondere all'ultima domanda, è non una buona idea conservare grandi quantità di dati in NSUserDeafaults.

NSUserDefaults non è fatto per pezzi di dati di parge. È un singleton e tutti i dati vengono caricati in ogni momento, inoltre non è possibile avere facilmente il supporto multi-threading con NSUserDefaults.

L'utilizzo di Core Data sarebbe migliore di NSUserDefaults.

Quello che suggerirei nella tua situazione è di memorizzare nella cache i dati a cui si accede spesso. In questo modo, fornisci un'esperienza più reattiva senza occupare un sacco di memoria sul dispositivo dell'utente.

    
risposta data 09.12.2015 - 08:20
fonte

Leggi altre domande sui tag