使用NSUserDefaults保存用户名和密码

创建一个user defaults方法有多个,最简单得快速创建方法:

NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults];

添加数据到 user defaults:

[accountDefaults setObject:nameField.text forKey:UserDefaultNameKey];

也可以添加基本数据类型int, float, bool等,有相应得方法

[accountDefaults setBool:YES forKey:UserDefaultBoolKey];

从user defaults中获取数据:

[accountDefaults objectForKey:NCUserDefaultNameKey]

[accountDefaults boolForKey: UserDefaultBoolKey];

今天用到NSUserDefault的时候,一直以为[[NSUserDefaults standardUserDefaults] setObject:array forKey:@"testInfo"] ;就算存储好了,再[[NSUserDefaults standardUserDefaults] arrayForKey:@"testInfo"]就算取出来,可是发现重启动程序,关键字testInfo对应的竟然是空,仔细查下资料,发现自己太大意了,忘了写到disk里面了![[NSUserDefaults standardUserDefaults] synchronize]; 涨学问了又。。。呵呵!!!!

下面贴出代码:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

[defaults setObject:@"111" forKey:@"myTest"];

[defaults synchronize];

NSString *testStr = [defaults objectForKey:@"myTest"];

NSLog(@"testStr is: %@",testStr);

注意问题:

通过查看官方文档。UserDefaults不是立即写入,而是根据时间戳定时的把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘应用程序就终止了。出现以上问题。可以通过调用synchornize方法强制写入。

要点:

1)NSUserDefaults非常好用,并不需要用户在程序中设置NSUserDefaults的全局变量,需要在哪里使用NSUserDefaults的数据,那么就在哪里创建一个NSUserDefaults对象,然后进行读或者写操作。

2)针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。

- (void)defaultCheck:(id)sender

{

NSLog(@" check按钮被按下   ");

NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults];

if ([accountDefaults boolForKey:NCUserDefaultBoolForRegister] == NO)

{

((UIButton*)sender).selected = YES;

[accountDefaults setBool:YES forKey:NCUserDefaultBoolForRegister];

[accountDefaults setObject:nameField.text forKey:NCUserDefaultNameKey];

[accountDefaults setObject:pwdField.text forKey:NCUserDefaultPasswordKey];

}

else {//YES

((UIButton*)sender).selected = NO;

[accountDefaults setBool:NO forKey:NCUserDefaultBoolForRegister];

[accountDefaults setObject:nil forKey:NCUserDefaultNameKey];

[accountDefaults setObject:nil forKey:NCUserDefaultPasswordKey];

}

}

- (void)loadView {

[super loadView];

nameField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];

pwdField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];

[nameField setCenter:CGPointMake(160, 100)];

[pwdField setCenter:CGPointMake(160, 150)];

NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults];

//存的是bool值一定要用boolForKey:获取

//如果之前已经保存了User Defaults,那么在读取的时候就要将数据读取出来,显示在用户名和密码框中(这里没有加密)。

if ([accountDefaults boolForKey:NCUserDefaultBoolForRegister] == YES) {

nameField.text = [accountDefaults objectForKey:NCUserDefaultNameKey];

pwdField.text = [accountDefaults objectForKey:NCUserDefaultPasswordKey];

}

else

{

[nameField setPlaceholder:@"用户名"];

[pwdField setPlaceholder:@"密码"];

}

nameField.borderStyle = UITextBorderStyleBezel;

[pwdField setBorderStyle:UITextBorderStyleRoundedRect];

[self.view addSubview:nameField];

[self.view addSubview:pwdField];

UIButton * loginBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[loginBtn setFrame:CGRectMake(0, 0, 50, 30)];

[loginBtn setCenter:CGPointMake(200, 200)];

[loginBtn addTarget:self action:@selector(loginToWeiBo:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:loginBtn];

UIButton * checkBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[checkBtn setFrame:CGRectMake(0, 0, 20, 20)];

[checkBtn setCenter:CGPointMake(160, 180)];

//选中之后得图标

[checkBtn setBackgroundImage:[UIImage imageNamed:@"lock.png"] forState:(UIControlState)UIControlStateHighlighted];

[checkBtn setBackgroundImage:[UIImage imageNamed:@"lock.png"] forState:(UIControlState)UIControlStateSelected];

//未选中

[checkBtn setBackgroundImage:[UIImage imageNamed:@"unlock.png"] forState:(UIControlState)UIControlStateNormal];

[checkBtn addTarget:self action:@selector(defaultCheck:) forControlEvents:UIControlEventTouchUpInside];

//用户名和密码已经保存

if([accountDefaults boolForKey:NCUserDefaultBoolForRegister] == YES)

{

[checkBtn setSelected:YES];

}

[self.view addSubview:Btn];

}

时间: 2024-07-29 06:55:34

使用NSUserDefaults保存用户名和密码的相关文章

NSUserDefaults保存用户名和密码

#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UITextField *nameTextField; @property (weak, nonatomic) IBOutlet UITextField *ageTextField; @end @implementation ViewController - (void)viewDidLoad { [s

使用keychain保存用户名和密码等敏感信息 KeychainItemWrapper和SFHFKeychainUtils

iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储.相对于 NSUserDefaults.文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在 重装App后,keychain里的数据还能使用.从ios 3.0开始,跨程序分享keychain变得可行. 如何需要在应用里使用使用keyChain,我们需要导入Security.framework ,key

android 保存 用户名和密码 设置等应用信息优化

1.传统的保存用户名,密码方式 SharedPreferences Editor editor = shareReference.edit(); editor.putString(KEY_NAME,"username_value"); 通过这样的方法,能够基本满足需求,比如有用户名,那么就Editor.putString存放就好. 但是这样的方法有一些弊端: (1)在存放一些集合信息,存储ArrayList就不合适 (2)如果针对用户,新增加了很多熟悉,比如性别,头像等信息,那么需要一

Android简易实战教程--第十六话《SharedPreferences保存用户名和密码》

之前在Android简易实战教程--第七话<在内存中存储用户名和密码> 那里是把用户名和密码保存到了内存中,这一篇把用户名和密码保存至SharedPreferences文件.为了引起误导,声明实际开发中不会用到这两种方式,这里指示提供一种思路和给初学者学习简单的api. 由于内容和之前的基本一样,不做过多的解释.直接上代码: xml文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi

Android保存用户名和密码

我们不管在开发一个项目或者使用别人的项目,都有用户登录功能,为了让用户的体验效果更好,我们通常会做一个功能,叫做保存用户,这样做的目地就是为了让用户下一次再使用该程序不会重新输入用户名和密码,这里我使用3种方式来存储用户名和密码 1.通过普通 的txt文本存储 2.通过properties属性文件进行存储 3.通过SharedPreferences工具类存储 第一种: /** * 保存用户名和密码的业务方法 * * @param username * @param password * @ret

使用keychain保存用户名和密码等敏感信息 KeychainItemWrapper和SFHFKeychainUtils。

iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储.相对于NSUserDefaults.文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用.从ios 3.0开始,跨程序分享keychain变得可行. 如何需要在应用里使用使用keyChain,我们需要导入Security.framework ,keych

终于解决“Git Windows客户端保存用户名与密码”的问题

Git - How to use netrc file on windows - Stack Overflow 这就是正确答案,我们已经验证过了,下面详细描述一下解决方法: 1. 在Windows中添加一个HOME环境变量,值为%USERPROFILE%,如下图: 2. 在"开始>运行"中打开%Home%,新建一个名为"_netrc"的文件. 3. 用记事本打开_netrc文件,输入Git服务器名.用户名.密码,并保存.示例如下: machine git.cn

KIKeyChain 安全保存用户名和密码

在 iOS 应用程序开发过程中,我们经常会存储一些比较重要的信息.如涉及到用户系统的 App, 我们就需要考虑自动登录的功能,如果把用户的用户名和密码存储在 NSUserDefault 中很不安全.第一,该信息是明文存储的:第二,可以通过一些工具获取到 NSUserDefault 中的信息.容易造成泄露用户的账号信息.出于安全方面的考虑,Apple 为我们提供了一个叫 KeyChain 的工具, 存储在里面的信息不能说绝对安全,但是相对于 NSUserDefault 或者其它一些存储在 App

IOS开发之----两种保存用户名和密码实现记住密码库

使用Keychain存储用户敏感信息 iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储.相对于 NSUserDefaults.文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在 重装App后,keychain里的数据还能使用.从ios 3.0开始,跨程序分享keychain变得可行. 如何需要在应用里使用使用keyChain,我们需要导入Secu