我正在尋找比NSUserDefaults更快的方式來保存用戶偏好設置。我發現,如果應用程序在寫入NSUserDefaults約10秒內死亡,它將不會永久保存。我使用默認設置來保存自定義鈴聲的路徑,自定義圖像的路徑,地圖座標以及基本上只是用戶定義的偏好設置。使用核心數據是更好的選擇嗎? SQLite的?什麼被認爲是最快和最輕量級的?如果應用程序在10秒內死亡,NSUserDefaults丟失新保存的數據
6
A
回答
16
您需要確保立即調用同步以保存數據。
[[NSUserDefaults standardUserDefaults] synchronize];
從蘋果公司的class reference:
因爲這個方法是每隔一段時間自動調用, 使用此方法僅如果你不能等待自動 同步(例如,如果你的應用程序即將退出)或 如果您要更新用戶的默認設置爲磁盤上的內容,即使 您尚未進行任何更改。
並回答你的第二個問題,它真的取決於你想存儲多少數據。 NSUserDefaults被設計爲存儲非常少量的數據(用於首選項),例如切換開關的狀態等。您可以在這裏存儲圖像和鈴聲的路徑,但這不是明智的建議。我的意思是你可以,但可能不應該。
如果您計劃存儲許多這些路徑,核心數據是一種更好的方法,因爲它具有非常好的可擴展性和性能。總的來說,如果你需要存儲大量數據,用戶核心數據,或者作爲另一種選擇將路徑存儲在文檔目錄中的plist中。
相關問題
- 1. 使用NSUserDefaults殺死應用程序後保存的數據丟失
- 2. 保存應用程序的數據,如果我更新應用程序,不會丟失應用程序
- 3. iOS應用程序保存更新後丟失的數據
- 4. 當某些節點突然死亡時,榛色內存映射丟失數據
- 5. Android Win Death - 應用程序死亡,沒有保存狀態
- 6. 處理應用程序死亡時的通知操作iOS 10
- 7. Qt應用程序因爲內存不足(OOM)而死亡
- 8. 重新啓動應用程序時丟失了保存的數據(android)
- 9. 如何在不丟失NSUserDefaults的情況下重新安裝應用程序?
- 10. NetLogo:死亡代理=丟失信息?
- 11. 保存約會的MAPI API不保存更改如果進程死亡
- 12. 在應用程序死亡後無法保存我的首選項
- 13. ios應用程序保存數據與nsuserdefaults持久?
- 14. 用結果集更新人物死亡和死亡
- 15. Asp.Net-MVC應用程序死亡
- 16. Silverlight Web應用程序死亡白屏
- 17. AlarmManager與應用程序一起死亡
- 18. 我的iPhone應用程序獲取內存警告並在6.8MB時死亡
- 19. 如何保持應用程序活動或死亡時重新啓動?
- 20. Android服務在應用程序死亡時重新啓動
- 21. NSUserDefaults保存數據到應用商店
- 22. IPC:共享內存死亡進程notfication
- 23. PHP應用程序如何將數據保存在內存中?
- 24. 用NSUserDefaults保存數據
- 25. 使用NSUserDefaults保存數據
- 26. iOS UIAutomation失敗:目標應用程序似乎已經死亡
- 27. 隨機數據丟失(NSUserDefaults的)時popToRootViewControllerAnimated
- 28. iOS 5 - Coredata Sqlite數據庫在丟失應用程序後丟失數據
- 29. 恢復丟失的物品multiprocessing.Queue當工人進程死亡
- 30. 新的Rails應用程序與Errno :: EIO一起死亡/
是的。爲你+1,我也是,當時我有我的cca 50代表,爲同樣的答案。儘管如此,懶得去尋找這個笨蛋。 – 2012-12-20 21:50:32
@ 0x7fffffff大約(大約)50 – 2012-12-20 21:55:24
@ 0x7fffffff(這麼多想知道的程序員和很少的努力...... :() – 2012-12-20 21:58:50