自动归档autoArchive By H.l

写点简单的代码,让开发更简单

 

详情:ios 应用实现快速的临时缓存之模型的自动归档

Demo:https://files.cnblogs.com/files/sixindev/AutoArchiver.zip

优点:1.模型里无需写一行代码即可自动归档(调用方法2)

   2.支持将NSDictionary 转化成模型,支持字典数组转换成模型数组

用法:只需要在模型里面引入 NSObject+JKCoding.h 头文件即可

 

方法1.字典转模型

   NSDictionary *dic =@{ @"name":@"jakill",
                         @"age":@"16",
                         @"className":@"5年级二班",
                       };
    
    //将json字典转化成模型
    Student *student = [Student objectFromDic:dic];

 

方法2:归档

    //1.保存并返回Data
    NSData *modelData = [NSKeyedArchiver archivedDataWithRootObject:student];
    
    //2.直接保存文件
    NSString *file = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"Student.data"];
    BOOL  isArchiveOK=[NSKeyedArchiver archiveRootObject:student toFile:file];
    if (!isArchiveOK) {
        NSLog(@"归档失败");//一般不会的
    }

 

方法3:解档

    Student *newStudent = [NSKeyedUnarchiver unarchiveObjectWithData:modelData];

 

这样很方便的实现对模型对象的归档,如果需要数据持久化,结合FMDB,直接保存NSData或直接保存JSON字符串(参考手思缓存),这样大大减少sqlite语句中众多属性名定义,以及后台数据变更所带来的麻烦.

 

扩展:利用Runtime 获取类成员属性实现FMDB的自动化,简化SqL语句

其它参考:

利用运行时实现自动归档

https://github.com/iKingsly/iKYerialization

 

posted @ 2015-10-28 10:37  sixindev  阅读(463)  评论(0编辑  收藏  举报