6

次のように、NSUserDefaults を使用してアプリに保存されたデータを実装しています。

[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:0],@"mySetting",nil]];
// check
int firstLaunch = [[NSUserDefaults standardUserDefaults] integerForKey:@"mySetting"];
// set
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"mySetting"];

開発目的で、アプリを毎回削除して再インストールすることなく、保存されたデータを削除してデフォルトに戻せるようにしたいと考えています。それを行う簡単な方法はありますか?私は resetStandardUserDefaults が仕事をするだろうと思っていましたが、そうではありません。

4

4 に答える 4

13

デフォルトに戻したいキーについては-removeObjectForKey:、アプリの設定からその定義を削除します。すべてが等しい場合、これは、以降の の呼び出しが-<type>ForKey:登録済みの既定値を返すことを意味します。

于 2008-12-20T15:44:01.850 に答える
10

次のスニペットは私のために働いています。

NSDictionary *defaultsDict = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
for (NSString *key in [defaultsDict allKeys])
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:key];

[[NSUserDefaults standardUserDefaults] synchronize];
于 2011-04-06T00:39:09.970 に答える
2

リセットを呼び出した後、デフォルトをリロードしようとしましたか? PEZ が言うように:

例えば

[NSUserDefaults resetStandardUserDefaults];
[NSUserDefaults standardUserDefaults];

これにより、標準セットのすべてのデフォルトとロードがクリアされます。

スニペットから見えるように 1 つの値のみをブリッツしたい場合は、Graham の -removeObjectForKey の提案の方が簡単です。

EDIT:クラスメソッドの誤用を修正しました。

于 2008-12-20T15:49:08.750 に答える
0

ドキュメントには、resetStandardUserDefaults について次のように書かれています。

続いて standardUserDefaults を呼び出すと、標準検索リストを使用して新しい共有ユーザー デフォルト オブジェクトが作成されます。

前向きな(希望的?) 考えがあれば、それが必要なように見えます。=)

于 2008-12-20T14:55:49.560 に答える