有什麼辦法可以將事務添加到NSUserDefaults
?我需要類似數據庫處理程序中衆所周知的begin - commit - revert函數,因此我可以在某些情況下恢復對用戶默認值的修改。當然這個用戶默認的其他用戶會在交易過程中被阻止寫入。NSUserDefaults事務性
注1:上述類的synchronize
方法因爲不做這件事情:根據文檔
- ,它是從時間調用時間也由框架
- 沒有「恢復」
注2:我看到dictionaryRepresentation
和registerDefaults
用,我可以實現我自己的交易機制(持有舊默認的拷貝在內存/甚至可以保存d交易期間交給plist)。但也許有一個現成的解決方案呢?
我的使用情況:
我的屏幕,用戶可以在每個屏幕上編輯一些設置的精靈般流。在當前實施中,隨着用戶移動到嚮導的下一個屏幕,這些設置會立即存儲在默認值中。現在這個嚮導可以被一些其他事件中斷(即使用戶可以選擇在任何屏幕上退出/取消嚮導),在這種情況下,我想回滾修改。
你的用例是什麼? – zoul
在github中有一個[StateSaver類](https://github.com/progrmr/SDK_Utilities/blob/master/Utils/StateSaver.h),幾乎可以滿足你的需求。 -saveDataToFile方法在功能上等同於提交。它沒有恢復,但是如果你想修改它,則提供源。 – progrmr
@zoul我有一個類似嚮導的流程,用戶可以在每個屏幕上編輯一些設置。在當前實施中,隨着用戶移動到嚮導的下一個屏幕,這些設置會立即存儲在默認值中。現在這個嚮導可以被一些其他事件中斷(即使用戶可以選擇在任何屏幕上退出/取消嚮導),在這種情況下,我想回滾修改。 – MrTJ