-1

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

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

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

4

5 回答 5

2

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


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

于 2012-09-17T11:56:38.597 回答
0

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

于 2012-09-17T11:58:08.167 回答
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数组中获取所有记录,然后添加新记录,然后像上面的整个数组一样存储..

我希望你能理解并且它对你有帮助......

:)

于 2012-09-17T12:01:54.477 回答
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];
于 2012-09-17T12:10:45.933 回答
-1

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

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

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

[SFHFKeychainUtils storeUsername:loginField.text andPassword:PasswordField.text forServiceName:@"dhaya" updateExisting:YES error:&error];

你想要密码的地方写下这段代码

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

这会很好用....

于 2012-09-26T06:30:36.430 回答