前言
之前一直是只利用单例存储个人信息的。为了保证用户数据的更新,还必须重写每个属性的set方法,为每一个属性建立一个key,一旦更新就要用NSUserDefaults进行存储,一条属性基本需要十行代码进行书写。如果属性多了起来,那代码量就更加惨不忍睹。且如果在用户数据包含model的情况下,还要进行额外处理,那过程就更加繁琐了。
索性,自己就利用归档相关的知识重新进行了整理。
大家需要导入的文件如下:
TLBaseModel
就行了。
在TLBaseModel中提供三个方法:
+ (instancetype)sharedInstance:(NSString *)key;
+ (void)saveData:(NSString *)key;
+ (void)clearData:(NSString *)key;
作用分别是:
根据标识key创建单例对象。
存储/更新数据。
删除数据。
1.存储数据
UserModel *userModel = [UserModel sharedInstance:UserKey0];
userModel.dic = @{@"sex":@"man"};
userModel.name = @"tl";
userModel.age = 25;
FatherModel *fatherModel = [FatherModel new];
fatherModel.arr = @[@"1",@"2",@"3"];
fatherModel.name = @"xxx";
fatherModel.phone = 18599990001;
userModel.father = fatherModel;
WifeModel *wifeModel = [WifeModel new];
wifeModel.name = @"yyy";
wifeModel.height = 165;
wifeModel.weight = 56.5;
fatherModel.wife = wifeModel;
[UserModel saveData:UserKey0];
打印结果:2.更新数据
UserModel *userModel = [UserModel sharedInstance:UserKey0];
FatherModel *fatherModel = userModel.father;
WifeModel *wifeModel = fatherModel.wife;
userModel.age = 30;
fatherModel.arr = nil;
fatherModel.name = @"yyy";
wifeModel.name = nil;
[UserModel saveData:UserKey0];
打印结果:3.删除数据
[UserModel clearData:UserKey0];
打印结果:如果项目只需要存储单个用户信息,TLBaseModel的三个方法去掉参数传递,实现方法稍微改一下即可。
如果大家有什么疑问或者能帮忙改进的地方,欢迎评论。