にトランザクション性を追加する方法はありますNSUserDefaults
か? データベース ハンドラーでよく知られている begin - commit - revert 関数のようなものが必要になるため、場合によってはユーザーのデフォルトの変更を元に戻すことができます。もちろん、このユーザー デフォルトの他のユーザーは、トランザクション中に書き込みをブロックされます。
注 1:synchronize
上記のクラスのメソッドは、次の理由でこのことを行いません。
- ドキュメントによると、フレームワークによっても時々呼び出されます
- 「元に戻す」はありません
注 2: 私は自分自身のトランザクション メカニズムを実装できることを確認しました (古いデフォルトのコピーをメモリに保持し、トランザクション中に plist に保存することもできます) dictionaryRepresentation
。registerDefaults
しかし、おそらくこれに対する解決策はありますか?
私のユースケース:
ユーザーが各画面でいくつかの設定を編集できるウィザードのような画面フローがあります。現在の実装では、これらの設定は、ユーザーがウィザードの次の画面に移動するとすぐにデフォルトに保存されます。現在、このウィザードは他のイベントによって中断される可能性があります (ユーザーは任意の画面でウィザードを終了/キャンセルすることもできます)。この場合、変更をロールバックしたいと思います。