iOS 用戶信息存儲的工具類

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN
@interface UserInfo : NSObject
@property (nonatomic,copy)NSString *userid;//用戶id
@property (nonatomic,copy)NSString *avatar;//頭像
@property (nonatomic,copy)NSString *mobile;//手機號
@property (nonatomic,copy)NSString *userName;//用戶名
@property (nonatomic,copy)NSString *nickname;//用戶暱稱
@property (nonatomic,copy)NSString *birthday;//生日
@property (nonatomic,copy)NSString *token;//token
@property (nonatomic,copy)NSString *sex;//性別

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

@interface UserManager : NSObject

/**
  存儲用戶信息

 @param dic 服務器獲取來的用戶信息字典
 @return <#return value description#>
 */
+ (BOOL)saveUserInfo:(NSDictionary *)dic;

/**
 取用戶信息

 @return 返回用戶信息模型
 */
+ (UserInfo *)userInfo;

/**
  清空用戶信息

 @return <#return value description#>
 */
+ (BOOL)clearUserInfo;

@end
NS_ASSUME_NONNULL_END
#import "UserManager.h"

@implementation UserInfo

- (instancetype)initWithDictionary:(NSDictionary *)dictionary
{
    if ([dictionary isKindOfClass:[NSDictionary class]])
    {
        if (self = [super init])
        {
            [self setValuesForKeysWithDictionary:dictionary];
        }
    }
    return self;
}

- (void)setValue:(id)value forKey:(NSString *)key
{
    if ([value isKindOfClass:[NSNull class]])
    {
        return;
    }
    [super setValue:value forKey:key];
}

#pragma mark ————————— 對未定義key的處理方法 —————————————
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
{
    // id 變量名現在可以直接使用,比如你要將服務器的 id 轉成 userid
    if([key isEqualToString:@"id"])
    {
//          self.userid = value;
//          return;
    }
    
}

@end

@implementation UserManager


+ (BOOL)saveUserInfo:(NSDictionary *)dic
{
   return [NSKeyedArchiver archiveRootObject:dic toFile:[self path]];
}

+ (UserInfo *)userInfo
{
    id  data = [NSKeyedUnarchiver unarchiveObjectWithFile:[self path]];
    UserInfo *model = [[UserInfo alloc]initWithDictionary:data];
    return model;
}

+ (BOOL)clearUserInfo
{
    NSFileManager *defaultManager = [NSFileManager defaultManager];
    if ([defaultManager isDeletableFileAtPath:[self path]])
    {
        //刪除歸檔文件
        return [defaultManager removeItemAtPath:[self path] error:nil];
    }
    else
    {
        return NO;
    }
}


/**
 Documents/ 保存應用程序的重要數據文件和用戶數據文件等。用戶數據基本上都放在這個位置(例如從網上下載的圖片或音樂文件),該文件夾在應用程序更新時會自動備份,在連接iTunes時也可以自動同步備份其中的數據。
 
 Library:這個目錄下有兩個子目錄,可創建子文件夾。可以用來放置您希望被備份但不希望被用戶看到的數據。該路徑下的文件夾,除Caches以外,都會被iTunes備份.
 
 Library/Caches: 保存應用程序使用時產生的支持文件和緩存文件(保存應用程序再次啓動過程中需要的信息),還有日誌文件最好也放在這個目錄。iTunes 同步時不會備份該目錄並且可能被其他工具清理掉其中的數據。
 Library/Preferences: 保存應用程序的偏好設置文件。NSUserDefaults類創建的數據和plist文件都放在這裏。會被iTunes備份。
 
 @return <#return value description#>
 */
+(NSString *)path
{
    // 獲取沙盒根目錄路徑
    NSString *homeDir   = NSHomeDirectory();
    // 獲取Documents目錄路徑
    NSString *docDir    = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) firstObject];
    //獲取Library的目錄路徑
    NSString *libDir    = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES) lastObject];
    // 獲取cache目錄路徑
    NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES) firstObject];
    // 獲取tmp目錄路徑
    NSString *tmpDir = NSTemporaryDirectory();
    // 獲取應用程序程序包中資源文件路徑的方法:
    NSString *bundle = [[NSBundle mainBundle] bundlePath];
    
    NSString *name = @"userinfo";
    NSString *type = @"sql";
    
    NSString *allName = [NSString stringWithFormat:@"%@.%@",name,type];

    return [tmpDir stringByAppendingPathComponent:allName];;
}


@end
#import "UserManager.h"
// 調用
[UserManager saveUserInfo:@{@"nickname":@"小張飛"}];
    
UserInfo *model =  [UserManager userInfo];
    
NSLog(@"%@", model.nickname);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章