iOS - 判断用户是否已经登陆
来源:互联网 发布:网络访问控制技术 编辑:程序博客网 时间:2024/05/30 05:00
下班在即 写写上班两个月的总结心得
1.每次打开一个项目,如果用户有过登陆则跳转主页,无用户则跳转登陆页,有无用户的判断,我的做法是,做一个用户单例(UserManager) 再做一个管理用户的工具 (UserManagerTool),利用用户管理工具,将用户归档,在程序的入口处,判断文件中的用户是否存在
1⃣️UserManager
全局用来存储用户的信息,在工程内可以任意调用
里面的主要的方法 只有KVC 键值配对
在UserManager.h中
//创建用户管理单例+ (UserManager *)manager;+ (instancetype)userManagerWithDict:(NSDictionary *)dict;- (instancetype)initWithDict:(NSDictionary *)dict;
在UserManager.m中
+(UserManager *)manager { static UserManager * _manager; if (_manager == nil) { _manager = [[UserManager alloc]init]; //_manager.status = NO; } return _manager;}+ (instancetype)userManagerWithDict:(NSDictionary *)dict{ return [[self alloc] initWithDict:dict];}- (instancetype)initWithDict:(NSDictionary *)dict{ if (self = [super init]) {// [self setValuesForKeysWithDictionary:dict]; self.user_id = dict[@"user_id"]; self.user_name = dict[@"user_name"]; } return self;}//归档解档用- (void)encodeWithCoder:(NSCoder *)encoder{ ; [encoder encodeObject:self.user_id forKey:@"user_id"]; [encoder encodeObject:self.user_name forKey:@"user_name"];}- (instancetype)initWithCoder:(NSCoder *)decoder{ if (self = [super init]) { self.user_id = [decoder decodeObjectForKey:@"user_id"]; self.user_name = [decoder decodeObjectForKey:@"user_name"]; } return self;}
2⃣️UserManagerTool
UserManagerTool.h中的方法
#import <Foundation/Foundation.h>@class UserManager;@interface UserManagerTool : NSObject//保存用户到文件 (归档用户) 登陆成功后调用+ (void)saveUserManager:(UserManager *)userManager;//从档案中取出这个用户 + (UserManager *)userManager;//从档案文件中删除这个用户 登出后调用此方法+ (void)removeUserManager;@end
UserManagerTool.m中的方法
#import "UserManagerTool.h"#define saveFilePath [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"userManager.data"]@implementation UserManagerTool+ (UserManager *)userManager{ return (UserManager *)[NSKeyedUnarchiver unarchiveObjectWithFile:saveFilePath];}+ (void)saveUserManager:(UserManager *)userManager{ [NSKeyedArchiver archiveRootObject:userManager toFile:saveFilePath];}+ (void)removeUserManager{ NSFileManager *mgr = [[NSFileManager alloc] init]; [mgr removeItemAtPath:saveFilePath error:nil];}@end
- 在Appdelegate.m中做判断
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //根据归档是否有无userManager对象,选择不同的根控制器 UserManager *userManager = [UserManagerTool userManager]; if (userManager) { NSLog(@"%@",userManager.token); MainTabBarVC * tab = [[MainTabBarVC alloc]init]; MainNavgationVC * nav = [[MainNavgationVC alloc]initWithRootViewController:tab]; self.window.rootViewController = nav; } else { ViewController * vc = [[ViewController alloc]init]; MainNavgationVC * nav = [[MainNavgationVC alloc]initWithRootViewController:vc]; self.window.rootViewController = nav; } return YES;}
1 0
- iOS - 判断用户是否已经登陆
- 判断用户是否已经登陆域的注册表键值
- magento -- magento中如何判断一个用户是否已经登陆
- magento -- magento中如何判断一个用户是否已经登陆
- Magento中如何判断一个用户是否已经登陆
- ios应用开发--判断用户是否已经登录
- 判断用户是否登陆.BaseAction
- struts 过滤器验证用户是否已经登陆
- 今天写出的一个基类。用于根据cookies来判断用户是否已经登陆
- domino判断用户是否已经在web端登陆的方法
- 用过滤器判断用户是否已经登录
- ios学习(判断版本号,判断用户是否是第一次登陆效果)
- Struts2根据Session判断用户是否登陆
- .net中怎样 判断用户是否登陆
- 用过滤器Filter判断用户是否登陆
- Struts拦截器判断用户是否登陆
- ios 如何判断键盘是否已经显示
- iOS-判断沙盒中是否已经存在文件
- Centos安装(更新)git(亲测有效)
- Android中应用程序获得系统签名权限
- android 中 系统日期时间的获取
- iOS中tableViewcell的重用原理
- handler源码浅析
- iOS - 判断用户是否已经登陆
- 集成 JPush之证书指南
- iOS9 storyboard autolayout
- eclipse--常用设置
- html知识点总结积累
- JavaScript学习总结(1)——JavaScript基础
- java实现坦克大战1.0版 在面板上画出坦克
- 图片裁剪,摄像后图片旋转
- 两个集合的交并集等