Iphone 多用户的NSUserDefault

Iphone 多用户的NSUserDefault,iphone,objective-c,ios,ipad,Iphone,Objective C,Ios,Ipad,在我的应用程序中,我使用登录表单进入应用程序,还使用NSUserDefaults存储用户首选项,例如: [storeData setObject:self.loginField.text forKey:@"USEREMAIL"]; [storeData setObject:self.PasswordField.text forKey:@"PASSWORD"]; 与我存储的一样,如果新用户登录NSUserDefaults,则存储值将更改。但是我想要两个首选项(例如:新用户ID和旧用户ID以及密

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

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

与我存储的一样,如果新用户登录NSUserDefaults,则存储值将更改。但是我想要两个首选项(例如:新用户ID和旧用户ID以及密码)。因此,请解释如何为同一个密钥存储多个值?

解决此问题的一种方法是存储一个NSDictionary,其中用户ID作为密钥,密码作为值



另一种选择是使用它,因为它是专门为这种事情设计的,而且更安全。

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

首先,使用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
数组中获取所有记录,然后添加新记录,然后像上面那样存储整个数组

我希望你能理解,这对你有帮助


:)

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

如果需要存储的内容多于密码,则密钥的值将是另一个字典,其中包含用户的密钥和值

简单案例的示例类似于:

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

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

然后在您要存储用户首选项的位置编写此代码

[SFHFKeychainUtils storeUsername:loginField.text和Password:PasswordField.text for ServiceName:@“dhaya”更新存在:是错误:&错误]

你想把密码写在哪里

NSString*password=[SFHFKeychainUtils getPasswordForUsername:loginField.text和ServiceName:@“dhaya”错误:&错误]; NSLog(@“passwordpassword%@”,password)


这将非常有效……

将密码和用户名存储在包含多个
NSMutableDictionary
对象的
NSMutableDictionary
中,并将该对象保存为用户默认值。