1. ホーム
  2. ios

NSUserDefaults 辞書からすべてのキーを削除する iOS

2023-11-21 07:04:11

質問

NSUserDefaults 辞書を使用して、ハイスコアなどの基本情報を保存し、ユーザーがアプリを閉じたときにデータが失われないようにしています。とにかく私は使っています。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

でデータを保存します。例えば、新しいハイスコアを保存したい場合、私はこうします。

[prefs setInteger:1023 forKey:@"highScore"];
[prefs synchronize];  //this is needed in case the app is closed. 

で、後でハイスコアを取得したい場合は、そうします。

[prefs integerForKey:@"highScore"];

とにかく重要なのは、私は他の多くのものを保存しているということです。 NSUserDefaults enable を格納するために booleans , integers , objects などのキーをすべて削除して、初めてアプリを起動したときのNSUserDefaultsのようにするには、どのような方法を実行すればよいのでしょうか?

私は、このようなものを探しています。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs deleteAllKeysAndObjectsInTheDictionary];

とか、すべてのキーを取得する方法があって、各オブジェクトをループする必要があるのですが、削除する方法がわかりません。

EDITです。

私は試してみました。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[NSUserDefaults resetStandardUserDefaults];
[prefs synchronize];

となっていて、まだハイスコアが取り出せますが...。

どのように解決するのですか?

もし、あなたが NSUserDefaultsのドキュメント を見ると、メソッド - (NSDictionary *) dictionaryRepresentation . 標準的なユーザーデフォルトでこのメソッドを使用すると、ユーザーデフォルトのすべてのキーのリストを取得することができます。 そして、これを使用してユーザーデフォルトをクリアすることができます。

- (void)resetDefaults {
    NSUserDefaults * defs = [NSUserDefaults standardUserDefaults];
    NSDictionary * dict = [defs dictionaryRepresentation];
    for (id key in dict) {
        [defs removeObjectForKey:key];
    }
    [defs synchronize];
}