ZXWUserInformation.m 4.8 KB
//
//  ZXWUserInformation.m
//  CitySittingRoom
//
//  Created by loongs_zxw on 17/4/7.
//  Copyright © 2017年 loongs_zxw. All rights reserved.
//

#import "ZXWUserInformation.h"

@implementation ZXWUserInformation
static ZXWUserInformation *_instance = nil;

+ (instancetype)allocWithZone:(struct _NSZone *)zone
{
    //    @synchronized (self) {
    //        // 为了防止多线程同时访问对象,造成多次分配内存空间,所以要加上线程锁
    //        if (_instance == nil) {
    //            _instance = [super allocWithZone:zone];
    //        }
    //        return _instance;
    //    }
    // 也可以使用一次性代码
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        if (_instance == nil) {
            _instance = [super allocWithZone:zone];
        }
    });
    return _instance;
}

+ (instancetype)shareZXWUserInformation
{
    static dispatch_once_t onceToken;
    
    dispatch_once(&onceToken, ^{
        if (_instance == nil) {
            _instance = [[self alloc]init];
        }
    });
    return _instance;
}

- (instancetype)init
{
    self = [super init];
    if (self) {
        _isLoginSuccess = NO;
        self.model = [[ZXWUserModel alloc]init];
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        self.token = [userDefaults objectForKey:@"token"];
        self.user_id = [userDefaults objectForKey:@"user_id"];
        self.user_phone = [userDefaults objectForKey:@"user_phone"];
        self.user_headimg = [userDefaults objectForKey:@"user_headimg"];
        self.user_name = [userDefaults objectForKey:@"user_name"];

    }
    return self;
}
// 为了严谨,也要重写copyWithZone 和 mutableCopyWithZone
- (id)copyWithZone:(NSZone *)zone
{
    return _instance;
}
- (id)mutableCopyWithZone:(NSZone *)zone
{
    return _instance;
}

/**
 *  存token
 */
-(void)saveToken:(NSString *)token
{
    self.token = token;
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:self.token forKey:@"token"];
    
    [userDefaults synchronize];
}

/**
 *  存user_id
 */
- (void)saveUser_id:(NSString *)user_id
{
    self.user_id = user_id;
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:self.user_id forKey:@"user_id"];
    [userDefaults synchronize];
}
/**
 *  存user_phone
 */
- (void)saveUser_phone:(NSString *)user_phone
{
    self.user_phone = user_phone;
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:self.user_phone forKey:@"user_phone"];
    [userDefaults synchronize];
}
/**
 *  存user_email
 */
- (void)saveUser_email:(NSString *)user_email{
    
    self.user_email = user_email;
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:self.user_email forKey:@"user_email"];
    [userDefaults synchronize];
    
}

/**
 *  存user_pwd
 */
- (void)saveUser_pwd:(NSString *)user_pwd{
    
    self.user_pwd = user_pwd;
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:self.user_pwd forKey:@"user_pwd"];
    [userDefaults synchronize];
}
/**
 *  存user_headimg
 */
- (void)saveUser_headimgUrlString:(NSString *)user_headimgUrlString
{
    self.user_headimg = user_headimgUrlString;
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:self.user_headimg forKey:@"user_headimg"];
    [userDefaults synchronize];
}
/**
 *  存user_name
 */
- (void)saveUser_name:(NSString *)user_name
{
    self.user_name = user_name;
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:self.user_name forKey:@"user_name"];
    [userDefaults synchronize];
    
}

- (BOOL)isLogin
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    self.user_name = [userDefaults valueForKey:@"user_name"];
    if (self.user_name != nil && ![self.user_name isEqualToString:@""] && (NSNull *)self.user_name != [NSNull null]) {
        return YES;
        
    }else{
        return NO;
        
    }
    
}

- (void)loginOut
{
    
    self.user_phone = nil;
    self.token = nil;
    self.user_id = nil;
    self.user_name = nil;
    self.user_headimg = nil;
    self.user_pwd = nil;
    self.user_email = nil;

    [User_Defaults setObject:nil forKey:@"token"];
    [User_Defaults setObject:nil forKey:@"user_id"];
    [User_Defaults setObject:nil forKey:@"user_phone"];
    [User_Defaults setObject:nil forKey:@"user_headimg"];
    [User_Defaults setObject:nil forKey:@"user_name"];
    [User_Defaults setObject:nil forKey:@"user_pwd"];
    [User_Defaults setObject:nil forKey:@"user_email"];

    [User_Defaults synchronize];
    [[NSNotificationCenter defaultCenter] postNotificationName:ExitSuccessful object:nil];

}

@end