美文网首页iOS Developer
轻量级——通过单例、归档存储多个用户数据

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

作者: 九日青争 | 来源:发表于2019-04-30 14:45 被阅读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的三个方法去掉参数传递,实现方法稍微改一下即可。


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

    相关文章

      网友评论

        本文标题:轻量级——通过单例、归档存储多个用户数据

        本文链接:https://www.haomeiwen.com/subject/riqvnqtx.html