iOS开发保持用户登录状态-NSUserDefault实现数据持久化
来源:互联网 发布:c语言编程心得体会 编辑:程序博客网 时间:2024/05/29 17:00
NSUserDefault是苹果提供给我们用来存储用户的登陆信息的一个类,当然是持久化的了,废话不多说了。我们就模拟一个用户登陆和注销的demo来学习一下如何使用NSUserDefault来存储用户的登陆信息。
1.首先我们得有一个登陆页面对应的类为ViewController.h, 在登陆页面有两个TextField和一个Button用来接受用户的输入,在点击Button中的回调的方法中,如果用户登陆成功,则把用户信息存入UserDefault中,然后以模态的方式来跳转到主界面,首先我们要获取UserDefault的单例,登陆页面中的登陆按钮回调的方法代码如下:
- (IBAction)tapLogin:(id)sender { //获取用户输入的信息 NSString *username = self.usernameTextField.text; NSString *password = self.passwordTextField.text; //对用户信息的验证 if ([username isEqualToString:password]){ //获取userDefault单例 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; //登陆成功后把用户名和密码存储到UserDefault [userDefaults setObject:username forKey:@"name"]; [userDefaults setObject:password forKey:@"password"]; [userDefaults synchronize]; //用模态跳转到主界面 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; id mainViewController = [storyboard instantiateViewControllerWithIdentifier:@"MainView"]; [self presentViewController:mainViewController animated:YES completion:^{ }]; } }
2.处理完登陆页面,我们会处理根据UserDefault中的name属性是否有值来选择加载哪个页面。在storybaord中我们默认的是主界面,在AppDelegate.m中如果未登陆,我们会设置一下rootViewController,代码如下
//判断是否登陆,由登陆状态判断启动页面 //获取UserDefault NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSString *name = [userDefault objectForKey:@"name"]; //获取storyboard UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; //如果用户未登陆则把根视图控制器改变成登陆视图控制器 if (name == nil) { NSLog(@"%@",name); id view = [storyboard instantiateViewControllerWithIdentifier:@"LoginView"]; self.window.rootViewController = view; }
3.经过上面的代码我们就可以根据用户登陆状态来选择加载的信息,在登陆后的页面中,我们添加一个按钮,用来退出。在退出按钮回调的方法中,我们需要把之前保存的用户信息进行remove掉,同时用模态的方式来跳转到登陆页面,代码如下:
- (IBAction)tapLoginOut:(id)sender { //获取UserDefaults单例 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; //移除UserDefaults中存储的用户信息 [userDefaults removeObjectForKey:@"name"]; [userDefaults removeObjectForKey:@"password"]; [userDefaults synchronize]; //获取storyboard UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; //获取注销后要跳转的页面 id view = [storyboard instantiateViewControllerWithIdentifier:@"LoginView"]; //模态展示出登陆页面 [self presentViewController:view animated:YES completion:^{ }];
到此就可以实现记录用户的登陆状态了
0 0
- iOS开发保持用户登录状态-NSUserDefault实现数据持久化
- ios开发之数据的持久化存储机制NSuserDefault、Plist、archiver、Sqlite、coreData
- iOS开发数据持久化技术01——NSUserDefault介绍
- ios开发学习笔记--数据持久化之偏好设置(NSUserDefault)
- 数据持久化(NSUserDefault、Plist)
- APP用户登录状态保持
- iOS 数据持久化 NSUserDefault 的使用 NSUserDefaults读取和写入自定义对象
- iOS 数据持久化 NSUserDefault 的使用 NSUserDefaults读取和写入自定义对象
- iOS 数据持久化 NSUserDefault 的使用 NSUserDefaults读取和写入自定义对象
- iOS 数据持久化 NSUserDefault 的使用 NSUserDefaults读取和写入自定义对象
- IOS开发记录用户登录状态
- 关于归档与反归档 以及NSUserDeFault实现的数据持久化
- iOS开发 数据持久化-归档
- iOS开发-数据持久化
- iOS开发-数据持久化
- 在iOS开发中如何实现数据持久化
- iOS 数据存储--NSUserDefault
- iOS 数据存储--NSUserDefault
- 上VB课的感受
- ACM-problem G
- jQuery执行时机
- HashMap中put函数的返回值
- 获取路径参数
- iOS开发保持用户登录状态-NSUserDefault实现数据持久化
- java 简单工厂模式
- EditText怎么控制不让输入0开头的数字?
- Linux交叉编译配置环境变量
- PPP协议(数据链路层中的协议)
- 嵌入式linux:make 参数 ARCH与CROSS_COMPILE
- oracle查询锁表及解锁
- VB课感悟
- CF652 前两题