如何在一个 UITextField 中设置两个不同的 NSUserDefaults

Posted

技术标签:

【中文标题】如何在一个 UITextField 中设置两个不同的 NSUserDefaults【英文标题】:how to set two different NSUserDefaults in one UITextField 【发布时间】:2015-05-27 06:22:25 【问题描述】:

我有新的用户注册和登录页面。当用户创建新帐户时,我创建了NSUserDefaults 方法以在注册过程完成后保存用户名和密码我在NSUserDefaults 方法的帮助下重定向到我的登录页面我将我的用户名和密码字符串放在相应的文本字段中,这一切对我来说都很好..但我真正的疑问是,当现有用户有一个帐户时,他将输入用户名和密码以及登录名,我需要的是我需要捕获新的用户密码和名称,以便当他重新打开其登录页面时,我需要显示它在文本字段中的用户名和密码

示例代码:

登录页面:

 NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
 self.username.text = [prefs stringForKey:@"username1"];
 self.password.text = [prefs stringForKey:@"password1"];

新用户页面:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:username.text forKey:@"username1"];
[prefs setObject:password.text forKey:@"password1"];
[prefs synchronize];

【问题讨论】:

不是您的答案,但您不应将密码存储在用户默认值中。你应该用钥匙串来做那种东西。 错误的数据存储方式! 你能告诉我如何改进这段代码 @Anand 在NSUserDefaults 中使用强字符串NSDictionary,用户名为key @Anand 你不应该这样做。与其显示存储在 NSUserDefaults 中的数据,不如将凭据存储在 Keychain 中(如 Mert 建议的那样),并执行自动登录以获得更好的用户体验。 【参考方案1】:
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
[userDefault setObject:@"user123" forKey:@"lastLoggedinUserName"];
[userDefault setObject:@"user123" forKey:@"lastLoggedinUserPassword"];

您可以如上所述保存上次登录用户的用户名和密码,并且在以后加载登录页面时,在文本字段中加载 lastLoggedinUser 详细信息。每次用户登录到您的应用程序时,您都需要保存用户凭据。

【讨论】:

需要在登录页面完成。用户登录成功后,保存这些详细信息。 好的,当用户在注册页面创建新帐户时,如何保存字符串并显示在登录页面? 您只需要创建一个字典并将其保存在 userdefault 中,并以用户名作为键。创建用户后,您可以保存上次登录的用户详细信息并将其加载到登录页面 纯文本存储密码?没有。只是没有。

以上是关于如何在一个 UITextField 中设置两个不同的 NSUserDefaults的主要内容,如果未能解决你的问题,请参考以下文章

如何在 XCTest 中设置 UItextfield 文本

如何在 Swift 的单独类中设置 UITextField 的委托?

如何在 UITextField 中设置 placeHolder / 用户文本和左边框之间的距离

UITextField 在 Swift 中设置最大字符长度

如何从视图控制器的 uitextfield 在类中设置 NSString

是否可以在 UITextField 中设置宽空间