iOS开发中的个人信息管理

作者: 哥是毛毛虫 | 来源:发表于2016-11-17 11:25 被阅读75次

开发中经常会管理个人信息,觉得自己在开发者中用的这套个人信息管理类挺好用的,贴出来跟大家互相学习

91C01A43-521D-4033-8023-EDBFF4B3CDCF.png
#import <Foundation/Foundation.h>

@interface NUDHelper : NSObject

+(void)saveValue:(id) value forKey:(NSString *)key;

+(id)valueWithKey:(NSString *)key;

+(BOOL)boolValueWithKey:(NSString *)key;

+(void)saveBoolValue:(BOOL)value withKey:(NSString *)key;

+(void)removeValueWithKey:(NSString *) key;
+(void)print;
/**
 *  对 NSUserDefaults 进行了一下简单的封装
 *
 */

#import "NUDHelper.h"

@implementation NUDHelper

+(void)saveValue:(id) value forKey:(NSString *)key{
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:value];
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:data forKey:key];
    [userDefaults synchronize];
}

+(id)valueWithKey:(NSString *)key{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    NSData *data = [userDefaults objectForKey:key];
    id user;
    if(data){
        user = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    }
    
    return user;
}

+(BOOL)boolValueWithKey:(NSString *)key
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    return [userDefaults boolForKey:key];
}

+(void)removeValueWithKey:(NSString *) key
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults removeObjectForKey:key];
    
}

+(void)saveBoolValue:(BOOL)value withKey:(NSString *)key
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setBool:value forKey:key];
    [userDefaults synchronize];
}

+(void)print{
    //    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    //    NSDictionary *dic = [userDefaults dictionaryRepresentation];
    //    DNSLog(@"%@",dic);
}

#import <Foundation/Foundation.h>


@class UserModel;
@interface AMUserInfoManager : NSObject


//创建单例,return自身
+(AMUserInfoManager *)sharedManager;



//判断用户是否已登录,return是否已登录
-(BOOL)isLoginIn;


//保存个人信息

-(void)saveUserInfo:(UserModel *)user;


//读取个人信息

-(UserModel *)getUserInfo;


//移除用户个人信息

-(void)removeUserInfo:(UserModel *)user;



@end
//对个人用户信息进行管理

#import "AMUserInfoManager.h"
#import "NUDHelper.h"
#import "Header.h"


static AMUserInfoManager *sharedManager = nil;
@implementation AMUserInfoManager

/**
 *   创建单例
 *
 *  @return 自身
 */
+ (AMUserInfoManager *) sharedManager
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedManager=[[self alloc]init]; //
    });
    return sharedManager;
}

//判断用户是否已登录

-(BOOL)isLoginIn{
    UserModel *user = [self getUserInfo];
    if (user) {
        return YES;
    }else{
        return NO;
    }
}


//保存用户个人信息
-(void)saveUserInfo:(UserModel *)user{
   
    [NUDHelper saveValue:user forKey:NUD_USER_INFROMATION];
}

//读取个人信息
-(UserModel *)getUserInfo{
    UserModel *user = [NUDHelper valueWithKey:NUD_USER_INFROMATION];
    return user;
}


//移除个人用户信息
-(void)removeUserInfo:(UserModel *)user{
    [NUDHelper removeValueWithKey:NUD_USER_INFROMATION];
    
}


@end

#import <Foundation/Foundation.h>

@interface UserModel : NSObject

@property (nonatomic, strong) NSString *userID;//用户ID
@property (nonatomic, strong) NSString *userToken;//用户token


@property (nonatomic, strong) NSString *userName;//用户昵称
@property (nonatomic, strong) NSString *userSex;//用户性别
@property (nonatomic, strong) NSString *userAge;//用户年龄
@property (nonatomic, strong) NSString *userPhone;//用户手机号
@property(nonatomic, strong) NSString *headimgurl;//用户头像



- (id) initWithDictionary:(NSDictionary *)dictionary;
@end

#import "UserModel.h"

@implementation UserModel

-(id)initWithDictionary:(NSDictionary *)dictionary{
    self = [super init];
    if (self) {
        
        //昵称
        if ([[dictionary objectForKey:@"nickname"] isKindOfClass:[NSNull class]]) {
            self.userName = @"未命名";
        }else{
            self.userName = [dictionary objectForKey:@"nickname"];
        }
        //手机号
        if ([[dictionary objectForKey:@"mobile"] isEqualToString:@""]) {
            self.userPhone = @"";
        }else{
            self.userPhone = [dictionary objectForKey:@"mobile"];
        }
        
        //用户ID
        self.userID = [dictionary objectForKey:@"user_id"];
        
        //token
        self.userToken = [dictionary objectForKey:@"token"];
        //用户头像
        self.headimgurl = [dictionary objectForKey:@"head_pic"];
        //用户性别
        self.userSex = [dictionary objectForKey:@"sex"];
        //用户生日
        self.userAge = [dictionary objectForKey:@"birthday"];
        
    }
    
    return self;
}

- (void)encodeWithCoder:(NSCoder *)aCoder{
    [aCoder encodeObject:self.userName forKey:@"username"];
    [aCoder encodeObject:self.userID forKey:@"user_id"];
    [aCoder encodeObject:self.userPhone forKey:@"mobile"];
    [aCoder encodeObject:self.userToken forKey:@"token"];
    [aCoder encodeObject:self.headimgurl forKey:@"head_pic"];
    
    [aCoder encodeObject:self.userSex forKey:@"sex"];
    [aCoder encodeObject:self.userAge forKey:@"birthday"];
    
    
    
}

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super init];
    if (self) {
        self.userName = [aDecoder decodeObjectForKey:@"username"];
        self.userID = [aDecoder decodeObjectForKey:@"user_id"];
        
        self.userPhone = [aDecoder decodeObjectForKey:@"mobile"];
        self.userToken = [aDecoder decodeObjectForKey:@"token"];
        self.headimgurl = [aDecoder decodeObjectForKey:@"head_pic"];
        
        self.userAge = [aDecoder decodeObjectForKey:@"sex"];
        self.userSex = [aDecoder decodeObjectForKey:@"birthday"];
        
    }
    return self;
}


-(NSString *)description{
    NSString *format = @"{\n"
    "    a_userID = %@;\n"
    "    a_userName= %@;\n"
    "    a_userPhone = %@;\n"
    "    a_usertoken = %@;\n"
    "    a_headImgUrl = %@;\n"
    "    a_userSex = %@;\n"
    "    a_userAge = %@;\n"
    
    
    "}";
    
    return [NSString stringWithFormat:format,
            self.userID,
            self.userName,
            self.userPhone,
            self.userToken,
            self.headimgurl,
            self.userSex,
            self.userAge];
            
    
}

@end

个人中心这块正在调试接口,所以UserModel里面的个人信息不多,需要其他信息可以按套路写就行了

用法:可以把AMUserInfoManager.h和UserModel.h这两个头文件写到pct文件里,
需要存储个人信息的时候

F8BE679E-180B-4B58-BC31-27C18976C6F5.png

或者更新信息

FC2C45B1-BEDE-4C92-B72E-F1934B51D853.png

退出登录

E634627A-63ED-40BE-A92D-A882E2FC7A25.png

相关文章

网友评论

  • key915:效果图能贴出来吗

本文标题:iOS开发中的个人信息管理

本文链接:https://www.haomeiwen.com/subject/mbsdpttx.html