`

(转)[ios]IOS开发之记录用户登陆状态

    博客分类:
  • IOS
阅读更多

转自:http://www.mincoder.com/article/1768.shtml?#comment

 

上一篇博客中提到了用CoreData来进行数据的持久化,CoreData的配置和使用步骤还是挺复杂的。但熟悉CoreData的使用流程后,CoreData还是蛮好用的。今天要说的是如何记录我们用户的登陆状态。例如微信,QQ等,在用户登陆后,关闭应用在打开就直接登陆了。那么我们在App开发中如何记录用户的登陆状态呢?之前在用PHP或者Java写B/S结构的东西的时候,我们用Session来存储用户的登陆信息,Session是存在服务器上仅在一次回话中有效,如果要记录用户的登陆状态,那么会用到一个叫Cookie的东西。Cookie和Session不同,Cookie是存在用户本地的一个文件,Cookie中存的就是用户的登陆信息,当用户在此登陆时,自动从Cookie中读取用户的登陆信息。

不扯Web的啦,在我们App开发中同样也遇到这要的问题,如何记录用户的登陆状态呢? 用我们的CoreData蛮? CoreData适合处理大量的数据,一般和TableView来结合起来使用,当然我们可以用CoreData来存储用户的登陆信息,但这不免有点大材小用,而且用起来也是比较复杂的。那么我们有其他更便捷的方法吗?苹果这么注重用户体验,当然有其他的方法了,就是NSUserDefault. NSUserDefault设置完值以后要进行同步

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:^{}];

下面的截图是在storyboard中的截图,运行出的效果和下面一样,到此我们就可以实现记录用户的登陆状态了

分享到:
评论

相关推荐

    ios FMDB用户登录界面

    在iOS应用开发中,为了存储用户数据或者实现用户登录功能,开发者常常会使用数据库,而FMDB是Objective-C对SQLite数据库的一个流行封装库。本文将深入探讨如何利用FMDB在iOS上构建用户登录界面。 首先,FMDB是...

    从零开始学iOS7开发系列教程-事务管理软件开发实战

    首先,第一章通常会介绍iOS开发环境的搭建,包括安装Xcode IDE、设置iOS模拟器和真机调试环境。这一阶段还会讲解Swift编程语言的基础知识,如变量、常量、数据类型、控制流以及函数的使用,因为Swift是iOS7及以后...

    ios应用源码之提示用户区app store评分的弹出框 2018128

    在iOS应用开发中,引导用户对App Store进行评分和评论是一项重要的策略,它有助于提高应用的可见性和用户参与度。本资源提供了一份2018年12月8日的iOS应用源码,用于实现自动提示用户去App Store给应用打分的功能。...

    ios-iOS开发文档.zip

    在iOS开发领域,创建高质量的开发文档是至关重要的,它能确保团队间的有效沟通,提高项目的可维护性和可扩展性。这份"ios-iOS开发文档.zip"文件包含了关于iOS应用开发的重要信息,尤其是关于接口文档的书写。以下是...

    海康威视开发包 IOS

    在iOS开发过程中,需要注意兼容性问题,确保开发的应用能在不同版本的iOS系统和设备上正常运行。此外,由于涉及到隐私和安全,开发者还需要遵循苹果的App Store审核指南,确保应用符合相关规定,尤其是在处理视频流...

    iOS开发基本API

    iOS开发基本API知识整理涵盖了多个方面,包括但不限于UI组件的使用、屏幕方向的处理、网络编程、数据存储、动画效果、音视频处理等。 首先,关于UI组件,笔记详细记录了如何设置输入键盘的退回、定义视图的尺寸...

    ios开发-使用mpass移动开发框架在ios端抓包hook脚本.zip

    在iOS开发过程中,有时我们需要对应用的网络请求进行抓包分析,以便于调试、优化或者安全检查。"ios开发-使用mpass移动开发框架在ios端抓包hook脚本.zip"是一个针对iOS开发者的重要资源,它包含了一套利用mpass移动...

    杰理蓝牙控制库_IOS_SDK开发说明1

    《杰理蓝牙控制库_IOS_SDK开发说明》 本文档详细阐述了使用杰理蓝牙控制库在iOS平台上进行软件开发的相关知识和技术要点。该库主要用于实现蓝牙设备的各种功能控制,包括设备连接、语音传输、设备信息获取、文件...

    ios开发的图书管理系统

    《iOS开发的图书管理系统》是针对移动平台进行书籍管理的一款应用程序,主要面向使用苹果设备的用户。本系统基于iOS操作系统,采用Swift或Objective-C作为主要编程语言,利用Xcode集成开发环境进行开发。通过深入...

    IOS 使用的异步状态机

    在iOS开发中,异步状态机是一种常用的编程模式,它用于管理对象或系统在不同状态之间的转换,并且这些转换可以在不同的线程上下文中执行。这种模式对于处理复杂的、需要响应外部事件的任务尤其有用,比如网络请求、...

    iOS通用开发框架

    1. **多平台兼容性**:一个通用的iOS开发框架应支持iPhone、iPad以及不同iOS版本的设备,包括对iOS的最新特性和API的兼容。这通常通过使用Auto Layout、Size Classes以及Swift的泛型来实现,确保界面在不同尺寸和...

    ios 界面登陆 demo

    在iOS开发中,界面登录是应用的基本组成部分,用于验证用户身份并确保数据安全。这个"ios界面登陆demo"提供了一个简单的实例,适用于初学者学习如何实现这一关键功能。以下是该Demo涉及的一些核心知识点: 1. **...

    东北大学ios大作业

    【标题】:“东北大学...综上所述,“TomatoTime”APP的开发涵盖了iOS开发的多个核心领域,既锻炼了开发者的技术能力,也体现了对用户体验和项目管理的理解。通过这样的大作业,学生能够全方位提升自己的iOS开发技能。

    ios开发之UILabel实现秒表

    在iOS开发中,UILabel是一个非常基础且常用的组件,通常用于显示单行或多行文本。本教程将探讨如何利用UILabel来实现一个简单的秒表功能。这个功能主要包括开始、停止和复位三个操作,非常适合iOS开发初学者进行实践...

    ios应用源码之下载带进度条记录的demo 2018127

    在iOS开发中,创建一个带有进度条记录的下载功能是一项常见的需求,特别是在开发涉及文件下载的应用时。这个“ios应用源码之下载带进度条记录的demo 2018127”提供了这样一个示例,它展示了如何实现下载过程中显示...

    解决ios拍照上传图片被旋转

    在iOS设备上,如果用户在横屏或竖屏状态下拍照,Exif信息会记录这一方向,使得图片在读取Exif信息的环境中能够保持正确的展示方向。 当iOS设备的图片被上传到服务器,例如一个基于Java的系统,如果不考虑Exif信息,...

    Ios手机即时通讯软件开发文档

    2. **异步事件与Delegate**:SDK支持通过代理模式处理异步事件,如网络连接状态变化、用户登录状态等。 3. **UIImageView视频显示**:SDK支持使用UIImageView来显示视频流,方便开发者进行界面布局。 4. **字符编码*...

    IOS游戏开发入门代码 HotChess 一款中国象棋的棋牌类iOS游戏

    5. **Model-View-Controller (MVC)架构**:iOS开发中的常见设计模式是MVC,它将应用程序分为模型(数据)、视图(用户界面)和控制器(协调两者)。HotChess可能遵循这一架构,使得代码组织清晰,易于维护。 6. **...

    iOS数独游戏完整源码

    Swift是苹果推荐的新一代编程语言,简洁易读,而Objective-C则是经典的iOS开发语言,两者都能为iOS应用提供强大的性能和丰富的API支持。 数独游戏的核心算法是生成和验证数独矩阵。生成算法通常包括两种:随机填充...

    ios11.3开发资源

    iOS 11.3引入了健康记录API,允许开发者访问用户的健康数据,如心率、血压、血糖等。开发者可以构建医疗健康类应用,帮助用户更好地管理个人健康信息,实现数据共享,促进医疗服务的智能化。 三、Core ML 2的优化 ...

Global site tag (gtag.js) - Google Analytics