iOS Developer

轻量级——通过单例、归档存储多个用户数据

2019-04-30  本文已影响173人  九日青争

前言

之前一直是只利用单例存储个人信息的。为了保证用户数据的更新,还必须重写每个属性的set方法,为每一个属性建立一个key,一旦更新就要用NSUserDefaults进行存储,一条属性基本需要十行代码进行书写。如果属性多了起来,那代码量就更加惨不忍睹。且如果在用户数据包含model的情况下,还要进行额外处理,那过程就更加繁琐了。
索性,自己就利用归档相关的知识重新进行了整理。

demo


大家需要导入的文件如下:

然后在自己项目的中构建的用户模型继承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的三个方法去掉参数传递,实现方法稍微改一下即可。


如果大家有什么疑问或者能帮忙改进的地方,欢迎评论。

上一篇下一篇

猜你喜欢

热点阅读