我需要在我的应用程序中访问UserDefaults。但我需要保存在应用程序中注册的每个用户的设置。例如:
[[NSUserDefaults standartUserDefaults] setObject:@"15:00" forKey:@"lastTime"]// for current user1
以及在注销user 1和登录user 2之后:
[[NSUserDefaults standartUserDefaults] setObject:@"11:00" forKey:@"lastTime"]// for current user2
而且,如果我尝试读取key @“lastTime”,那么我会得到最后一个值,但不是这个用户的。我可以将userDefaults存储在不同的文件中,作为一个变体?或者其他解决方案?
最后我解决了这个问题:
#define UserDefaults [NSUserDefaults standardUserDefaults]
#define uKey(key) [NSString stringWithFormat:@"%@_%@",key,User.user_name]
[UserDefaults setInteger:lastData forKey:uKey(@"lastResultDataId")];
5条答案
按热度按时间qjp7pelc1#
iOS上没有用户的概念每一台设备,iPhone或iPad,都被假定有且只有一个用户。显然,这通常不是真的,尤其是在iPad上。所以有些应用程序会为不同的人创建使用设备的方案。如果你已经这样做了--但不清楚你是否已经这样做了--那么你就知道用户名了。如果你正在编写Mac应用程序,那么就使用NSUserName()以获取登录用户的名称。之后,只需将用户名连接到NSUserDefaults中的密钥上,如下所示:
(对于Mac应用程序,用户名将设置为NSUserName();对于多用户iOS应用程序,用户名将设置为您已经想到的任何方案)
jyztefdp2#
如果您有某种用户标识符,请为不同的用户使用字典:
vnzz0bqm3#
您必须有某种方法来唯一标识用户,然后在设置/获取
lastTime
值时在键中使用任何内容- UUID、用户名、电子邮件、用户IDmfpqipee4#
就我个人而言,我会使用一个
NSDictionary
,每个用户都有一个字典,并将其存储到NSUserDefaults
中的一个关键字下,该关键字是由他们的用户名构造的,如下所示。要检索这些数据,您需要做的就是知道用户的用户名是什么,然后执行以下操作
但是,如果要对此数据进行任何修改,则需要对其进行调整,以便将数据移动到
NSMutableDictionary
中,这样您就可以对其进行更新,然后将其存储回NSUserDefaults
tpxzln5u5#
确保设置值后,用户将同步用户默认值。如
[[NSUserDefaults标准用户默认值]同步];