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
È 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. iOS 10, NSUserDefaults non funziona
- 2. NSUserDefaults provoca app rifiutare
- 3. Core Bluetooth: CBPeripheral disconnette ogni ~ 10 secondi
- 4. visualizza dati dopo ogni 10 secondi in Android
- 5. Dati persi dopo l'uccisione dell'app utilizzando NSUserDefaults
- 6. GcWatcher.finalize scaduto dopo 10 secondi
- 7. Esegui codice ogni 10 secondi ma inizia anche 0 secondi
- 8. Reindirizza 10 secondi Conto alla rovescia
- 9. ActiveRecord :: ConnectionTimeoutError: impossibile ottenere una connessione al database entro 5.000 secondi (atteso 5.000 secondi)
- 10. Verificare se esiste chiave NSUserDefaults
- 11. Filtra gli oggetti entro due secondi l'uno dall'altro utilizzando SQLAlchemy
- 12. I Geofence Android vengono rimossi se l'app viene uccisa dall'utente?
- 13. Rileva i dati non salvati utilizzando angularjs
- 14. Uso NSUserDefaults con Xcode 8 e iOS 10
- 15. Nexus 10 camera.release si blocca per 30 secondi
- 16. App 10 UWP di Windows 10 - Il pulsante Indietro funziona solo se premuto la seconda volta
- 17. Azione sull'applicazione uccisa in Android
- 18. Get slash se non entro parentesi quadre
- 19. Devo usare NSUserDefaults o un plist per memorizzare i dati?
- 20. Lavorare con i dati nelle app iOS (Cosa scegliere? NSData, CoreData, sqlite, PList, NSUserDefaults)
- 21. iTunes Connect invia per revisione: i dati della tua app non possono essere salvati. Riprovare
- 22. NSUserDefaults vs NSCoding
- 23. Dati principali vs NSUserDefaults per dati utente registrati
- 24. 10 secondi di ritardo tra login e prompt della shell.
- 25. Dove NSUserDefaults memorizza i dati su Mac OS X?
- 26. creare un semplice conto alla rovescia di 10 secondi
- 27. Come aggiungere 10 secondi in current_timestamp SQL (Oracle)
- 28. Come mostrare div per 10 secondi e poi nasconderlo
- 29. JavaFX MediaPlayer - La musica si interrompe dopo 10 secondi
- 30. Come ricaricare JSON con AJAX ogni 10 secondi
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ò. –
@ 0x7fffffff circa (circa) 50 –
@ 0x7fffffff (così tanti aspiranti programmatori e così poco sforzo ... :() –