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

黑客技术 点击右侧关注,了解黑客的世界!

Linux编程 点击右侧关注,免费入门到精通!

程序员严选 甄选正品好物,程序员生活指南!


前言

之前一直是只利用单例存储个人信息的。为了保证用户数据的更新,还必须重写每个属性的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的三个方法去掉参数传递,实现方法稍微改一下即可。


 推荐↓↓↓ 

👉16个技术公众号】都在这里!

涵盖:程序员大咖、源码共读、程序员共读、数据结构与算法、黑客技术和网络安全、大数据科技、编程前端、Java、Python、Web编程开发、Android、iOS开发、Linux、数据库研发、幽默程序员等。

万水千山总是情,点个 “ 在看” 行不行