我需要在偏好中存储“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];
用于存储我的数据。但是如何指定两个不同的默认值,以便我可以清除特定默认文件中的所有变量?
提前致谢:)
答案 0 :(得分:1)
您可以在“根”级别上存储两个子节点,而不是维护两个单独的层次结构。只需使用get / set NSDictionary
方法获取并存储它们。例如,要获取“user_session”首选项,请使用以下命令:
NSDictionary user_session = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"user_session"];
同样,您可以使用以下方法清除:
[[NSUserDefaults standardUserDefaults] setObject:[NSDictionary dictionary] forKey:@"user_session"];
如果它们尚不存在,您必须确保在启动时初始化词典。
答案 1 :(得分:1)
NSUserDefault
的工作方式与Android中的SharedPreference
不同。这里有一个共同的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"];
答案 2 :(得分: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"];
答案 3 :(得分:0)
您可以尝试:在您的应用程序中删除存储在userDefaults中的所有对象。
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];