1

「user_session」と「game_deck」関連の情報を設定に保存する必要があります。

アプリのある時点で、「game_deck」に保存されているすべてのデータを消去する必要があり、ログアウト時に「user_session」に保存されているすべてのデータを消去する必要があります。

ファイル名を好みに指定することで、Androidでこの機能を実現しました。

                SharedPreferences prefs = getSharedPreferences(
                        "user_session", Context.MODE_PRIVATE);
                Editor editor = prefs.edit();
                editor.clear();
                editor.commit();

                SharedPreferences prefs = getSharedPreferences(
                        "game_deck", Context.MODE_PRIVATE);
                Editor editor = prefs.edit();
                editor.clear();
                editor.commit();

iPhone用に同じプロジェクトを作成しているので、どうすればObjective-Cで同じ機能を実現できますか?

私は使用する必要があります

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

しかし、特定のデフォルト ファイルからすべての変数をクリアできるように、2 つの異なるデフォルトを指定するにはどうすればよいでしょうか。

前もって感謝します :)

4

4 に答える 4

1

NSUserDefaultSharedPreferenceAndroidの とは動作が異なります。ここには、standardUserDefaultすべてのデータを保存できる共通オブジェクトがあります。「user_session」や「game_deck」などの個別のユーザー デフォルトはありません。

あなたができることは、辞書を作成することです

NSMutableDictionary *userSessionDict = [[NSMutableDictionary alloc] init];
[userSessionDict setObject:@"someUsername"  forKey:@"username"];


NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[default setObject:userSessionDict forKey:@"user_session"];

//you can remove using
[default removeObjectForKey:@"user_session"];
于 2013-03-01T06:13:39.120 に答える
1

おそらく、2 つの別個の階層を維持する代わりに、「ルート」レベルに 2 つの子を格納するだけで済みます。get/setNSDictionaryメソッドを使用して、それらを取得して保存するだけです。たとえば、「user_session」設定を取得するには、次のようにします。

NSDictionary user_session = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"user_session"];

同様に、次を使用してこれをクリアできます。

[[NSUserDefaults standardUserDefaults] setObject:[NSDictionary dictionary] forKey:@"user_session"];

辞書がまだ存在しない場合は、起動時に辞書を初期化する必要があります。

于 2013-03-01T06:12:25.543 に答える
0

これを試すことができます: これにより、アプリケーションの userDefaults に保存したすべてのオブジェクトが削除されます。

NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
于 2013-03-01T06:27:27.430 に答える
0

あなたはこれに従うことができます:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:Context.MODE_PRIVATE forKey:@"user_session"];
[defaults setObject:Context.MODE_PRIVATE forKey:@"game_deck"];

特定の変数からすべての変数をクリアしたい場合:(たとえば、「user_session」を使用):

[defaults removeObjectForKey:@"user_session"];
于 2013-03-01T06:25:35.743 に答える