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];

用于存储我的数据。但是如何指定两个不同的默认值,以便我可以清除特定默认文件中的所有变量?

提前致谢 :)

4

4 回答 4

1

您可能只在“根”级别存储两个孩子,而不是维护两个单独的层次结构。只需使用 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 回答
1

NSUserDefault工作方式与SharedPreferenceAndroid 中的不同。这里有一个通用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 回答
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 回答
0

您可以试试这个:这会删除您在应用程序中存储在 userDefaults 中的所有对象。

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