2012-12-20 25 views
6

我正在尋找比NSUserDefaults更快的方式來保存用戶偏好設置。我發現,如果應用程序在寫入NSUserDefaults約10秒內死亡,它將不會永久保存。我使用默認設置來保存自定義鈴聲的路徑,自定義圖像的路徑,地圖座標以及基本上只是用戶定義的偏好設置。使用核心數據是更好的選擇嗎? SQLite的?什麼被認爲是最快和最輕量級的?如果應用程序在10秒內死亡,NSUserDefaults丟失新保存的數據

回答

16

您需要確保立即調用同步以保存數據。

[[NSUserDefaults standardUserDefaults] synchronize]; 

從蘋果公司的class reference

因爲這個方法是每隔一段時間自動調用, 使用此方法僅如果你不能等待自動 同步(例如,如果你的應用程序即將退出)或 如果您要更新用戶的默認設置爲磁盤上的內容,即使 您尚未進行任何更改。

並回答你的第二個問題,它真的取決於你想存儲多少數據。 NSUserDefaults被設計爲存儲非常少量的數據(用於首選項),例如切換開關的狀態等。您可以在這裏存儲圖像和鈴聲的路徑,但這不是明智的建議。我的意思是你可以,但可能不應該。

如果您計劃存儲許多這些路徑,核心數據是一種更好的方法,因爲它具有非常好的可擴展性和性能。總的來說,如果你需要存儲大量數據,用戶核心數據,或者作爲另一種選擇將路徑存儲在文檔目錄中的plist中。

+1

是的。爲你+1,我也是,當時我有我的cca 50代表,爲同樣的答案。儘管如此,懶得去尋找這個笨蛋。 – 2012-12-20 21:50:32

+0

@ 0x7fffffff大約(大約)50 – 2012-12-20 21:55:24

+0

@ 0x7fffffff(這麼多想知道的程序員和很少的努力...... :() – 2012-12-20 21:58:50

相關問題