2012-12-20 7 views
6

Sto cercando un modo più veloce per salvare le preferenze utente rispetto a NSUserDefaults. Ho scoperto che se l'app viene uccisa entro circa 10 secondi dalla scrittura su NSUserDefaults, non verrà salvata in modo permanente. Uso i valori predefiniti per salvare i percorsi su suonerie personalizzate, percorsi per immagini personalizzate, coordinate della mappa e fondamentalmente solo preferenze definite dall'utente. L'utilizzo dei dati di base è l'opzione migliore? SQLite? Cosa viene accettato come il più veloce e leggero?NSUserDefaults Lose Dati appena salvati se App uccisa entro 10 secondi

risposta

16

È necessario essere sicuri di chiamare la sincronizzazione per salvare immediatamente i dati.

[[NSUserDefaults standardUserDefaults] synchronize]; 

Da Apple class reference:

Poiché questo metodo viene richiamato automaticamente ad intervalli periodici, uso questo metodo solo se non potete aspettare per la sincronizzazione automatica (ad esempio, se l'applicazione è di circa per uscire) o se si desidera aggiornare le impostazioni predefinite dell'utente su ciò che è su disco anche se non si sono apportate modifiche.

E per rispondere alla seconda domanda, dipende molto dalla quantità di dati che si desidera memorizzare. NSUserDefaults è progettato per memorizzare quantità molto piccole di dati (per le preferenze) come lo stato di un interruttore a levetta, ecc. Si può fare a meno di memorizzare i percorsi di immagini e suonerie qui, ma non è esattamente consigliabile. Con ciò intendo che puoi, ma probabilmente non dovrebbe.

Core Data è un approccio molto migliore se si intende archiviare molti di questi percorsi in quanto è molto scalabile e funziona molto bene. Quindi, nel complesso, se è necessario memorizzare un sacco di dati, dati di base dell'utente o come alternativa, memorizzare i percorsi in un plist nella directory dei documenti.

+1

Sì. +1 per te, anche io, ho i miei rappresentanti 50 cca in quel momento per la stessa risposta. Troppo pigro per cercare il dupe, però. –

+0

@ 0x7fffffff circa (circa) 50 –

+0

@ 0x7fffffff (così tanti aspiranti programmatori e così poco sforzo ... :() –

Problemi correlati