NSUserdefaults for multiuser

时间:2012-09-17 11:52:45

标签: iphone objective-c ios ipad

在我的应用程序中,我使用登录表单进入应用程序,同时使用NSUserDefaults来存储用户首选项,例如:

[storeData setObject:self.loginField.text forKey:@"USEREMAIL"]; 
[storeData setObject:self.PasswordField.text forKey:@"PASSWORD"];

就像我存储的那样,如果新用户登录NSUserDefaults存储的值将被更改。但我想要两个首选项(例如:新用户标识和旧用户标识以及密码)。那么请解释如何为同一个密钥存储多个值?

5 个答案:

答案 0 :(得分:2)

解决此问题的一种方法是存储一个NSDictionary,其中UserID为键,密码为值。


另一个选择是使用Keychain专为此类设计而设计,并且更安全。

答案 1 :(得分:0)

创建全局NSMutableArray并在NSDictionary对象中添加以上详细信息并将所有对象存储在数组中。这样您将拥有所有用户对象。您可以随时获取它。

答案 2 :(得分:0)

首先使用AppDelegate类创建全局数组,例如..

userDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataRepresentingtblArrayForSearch = [userDefaults objectForKey:@"arrScheduleDates"];
if (dataRepresentingtblArrayForSearch != nil) {
    NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingtblArrayForSearch];
    if (oldSavedArray != nil)
        arrScheduleDates = [[NSMutableArray alloc] initWithArray:oldSavedArray];
    else
        arrScheduleDates = [[NSMutableArray alloc] init];
} else {
    arrScheduleDates = [[NSMutableArray alloc] init];
}
[arrScheduleDates retain];

之后当你想要存储新记录时,然后从arrScheduleDates数组中获取所有记录,之后添加新记录,然后像上面那样添加整个数组...

我希望你明白并且对你有帮助......

:)

答案 3 :(得分:0)

满足您要求的绝对最简单的方法是使用用户的电子邮件地址(假设它们都是唯一的)作为字典的存储密钥,并使用密码作为值。

如果您需要存储的密码超过密码,那么密钥的值将是另一个包含用户密钥和值的字典。

简单案例的一个例子看起来类似于:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSDictionary *storedUsers = [userDefaults objectForKey:@"userData"];
if (nil == storedUsers) storedUsers = [NSDictionary dictionary];

NSMutableDictionary *mutableStoredUsers = [NSMutableDictionary dictionaryWithDictionary:storedUsers];
NSString *userPassword = [self.PasswordField.text copy]; //add autorelease if you aren't using ARC
NSString *userEmail = [self.loginField.text copy]; //add autorelease if you aren't using ARC
if (nil != userEmail)
{
  [mutableStoredUsers setObject:userPassword forKey:userEmail];
}

[userDefaults setObject:[NSDictionary dictionaryWithDictionary:mutableStoredUsers] forKey:@"userData"];
[userDefaults synchronize];

答案 4 :(得分:-1)

首先下载并导入给定链接的文件

https://github.com/ldandersen/scifihifi-iphone/tree/master/security

然后你想存储用户偏好的地方写下这段代码

[SFHFKeyeyinUtils storeUsername:loginField.text andPassword:PasswordField.text forServiceName:@“dhaya”updateExisting:YES error:& error];

你想要密码写这段代码

NSString * password = [SFHFKeychainUtils getPasswordForUsername:loginField.text andServiceName:@“dhaya”error:& error];    NSLog(@“passwordpassword%@”,密码);

这会很有效....