存储数据 字典转模型

2020-02-29  本文已影响0人  i爱吃土豆的猫

.h

#import <Foundation/Foundation.h>

@interface HJCacheClass : NSObject

///数据持久化保存的key
+ (void)mn_saveModel:(id)model key:(NSString *)key;

///获取数据持久化保存的Model  - 要传入model的Class - 内部进行yyModel转模型 
+ (id) mn_getSaveModelWithkey:(NSString *)key modelClass:(Class)modelClass;

///获取保存的模型数组
+ (id) mn_getSaveModelArrayWithkey:(NSString *)key modelClass:(Class)modelClass;

@end

.m

#import "HJCacheClass.h"
#import "YYModel.h"

@implementation HJCacheClass

+ (void)mn_saveModel:(id)model key:(NSString *)key{

    //model转json
    NSDictionary *productDic = [model yy_modelToJSONObject];

    /**
     NSUserDefaults支持的数据格式有:NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL类型,而我们这里存储的是自定义的model类型-ProductModel,该类型不被支持
     */
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:productDic];
    [[NSUserDefaults standardUserDefaults] setObject:data forKey:key];

}


+ (id) mn_getSaveModelWithkey:(NSString *)key modelClass:(Class)modelClass{

    NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:key];
    NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    return [modelClass yy_modelWithJSON:dict];
}

+ (id) mn_getSaveModelArrayWithkey:(NSString *)key modelClass:(Class)modelClass{

    NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:key];
    NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    return [NSArray yy_modelArrayWithClass:[modelClass class] json:array];
}


@end

调用的地方

存储
HJPassportUserInfoModel *pUserInfoModel = [HJPassportUserInfoModel mj_objectWithKeyValues:bodyDict];
[HJCacheClass mn_saveModel:pUserInfoModel key:@"pUserInfoModel"];
取值
HJPassportUserInfoModel *pUserInfoModel = [HJCacheClass mn_getSaveModelWithkey:@"pUserInfoModel" modelClass:[HJrPassportUserInfoModel class]];
NSString *institutionId = pUserInfoModel.institutionId;
NSString *userId = pUserInfoModel.userId;
上一篇 下一篇

猜你喜欢

热点阅读