2015-02-13 17 views
5

Ho un'app in cui utilizzo già i dati principali per archiviare una grande quantità di negozi, che un utente può visualizzare una volta effettuato l'accesso. Attualmente sto implementando la parte di accesso dell'app e Ho esaminato molte domande correlate. Molti di essi suggeriscono di utilizzare NSUserDefaults per archiviare dati utente non sensibili. Sto pensando di memorizzare cose come nome, cognome, email, foto del profilo e forse indirizzo. L'elenco potrebbe crescere in futuro. La mia domanda è un'opzione valida per creare un utente entity nel mio modello di dati di base al fine di memorizzare un singolo oggetto utente o sarà una cattiva pratica e dovrei semplicemente farlo con NSUserDefaults? Sono tentato di utilizzare Core Data poiché ho già impostato tutto e non aggiungerebbe ulteriore complessità all'implementazione.Dati principali vs NSUserDefaults per dati utente registrati

risposta

3

Mi trovavo in una situazione molto simile in cui ti trovavi mentre stavi sviluppando un'applicazione recente. Ho trovato che NSUserDefaults era una soluzione più appropriata per la memorizzazione delle informazioni degli utenti, dal momento che questo è ciò per cui è esplicitamente destinato. Come dice Apple documentation, la classe NSUserDefaults fornisce un'interfaccia programmatica per l'interazione con il sistema di default. Il sistema di default consente a un'applicazione di personalizzare il suo comportamento in modo che corrisponda alle preferenze dell'utente. '

Dalla mia esperienza, l'utilizzo di NSUserDefaults per archiviare informazioni utente invece di Core Data significava avere molto meno codice. Inoltre, non hai il sovraccarico di dover accedere all'archivio dei dati di base ogni volta che l'utente accede alla tua app).

Per riferimento, ho utilizzato this e this mentre stavo imparando dove usare NSUserDefaults.

+2

Ho usato NSUserDefaults alla fine, i collegamenti che hai fornito erano abbastanza utili. Grazie! – Georgi

4

Ho fatto entrambe le cose, ma per me l'archiviazione del mio utente in CoreData e il salvataggio del mio ID utente negli NSUserDefault s era la soluzione migliore. L'ho fatto perché stavo usando sia Mantle e Overcoat per analizzare la risposta del server e il mio utente aveva esattamente la stessa struttura di qualsiasi altro utente nell'app.

+0

Buona risposta qui. Dichiara tutte le giuste informazioni - Accesso lato server e accesso locale –

0

Vado con NSUserDefault se si prevede di avere un solo utente alla volta. In una delle nostre app è necessario avere la possibilità di gestire più account utente contemporaneamente. Abbiamo creato un db diverso per ogni utente che utilizza UserId come identificatore di nome. Per farci ricordare lo stato dell'app per ogni utente Quindi penso che la risposta dipenderà dallo scenario. Ricorda solo di non salvare informazioni preziose su userDefault. Forse cose come email, username, ecc sarebbero migliori se vengono salvate sul key ring dell'app. Ci sono alcuni pod che rendono il salvataggio e il recupero dal portachiavi facile come l'accesso a un dizionario.

Buona fortuna.

Problemi correlati