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

详情: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

自动归档autoArchive By H.l的更多相关文章

  1. Runtime之NSCoding的自动归档、接档

    为什么要有Runtime的NSCoding的自动归档.接档 大家所熟知的方法 //归档方法 - (void)encodeWithCoder:(NSCoder *)aCoder { //当学生被归档,学 ...

  2. pt-archiver配置自动归档

    Mysql的数据归档通常使用percona的pt-archiver.通过shell脚本加crontab可以应对大多数场景下的数据自动归档. 安装 Percona Toolkit的安装不再赘述,请自行搜 ...

  3. Linux下Tomcat catalina.out自动归档,以及logrotate 配置详解

    Linux下Tomcat catalina.out自动归档 如果 catalina.out 日志达到 2GB 大小的时候,Tomcat 因为缓存问题,便没有办法继续输出日志了.  为了避免这种情况,你 ...

  4. Linux环境下将Oracle11g数据库模式由非归档模式(Noarchivelog)修改为自动归档模式(archivelog)

    1.查看Oracle当前版本 select * from v$version 如图所示: 2.切换到Oracle用户 su - oracle 如图所示: 3.进入sqlplus(此时尚未登录oracl ...

  5. Runtime应用(三)实现NSCoding的自动归档和自动解档

    当我们需要将一个对象进行归档时,都要让该对象的类遵守NSCoding协议,再实现归档和接档方法.例如有一个Person类,该类有两个成员变量 @property (nonatomic,copy) NS ...

  6. 在view中实现UIViewController的跳转 By H.L

    view中是不能进行UIViewController的push,pop等操作的,若进行跳转操作,一般是用代理,block,通知等实现,那如何实现在ViewController的subView中实现跳转 ...

  7. 零零碎碎写的shell脚本(三):一键自动归档压缩脚本

    #!/bin/bash # author by sysk read -p "There files: " FILE1 FILE2 FILE3 read -p "Desti ...

  8. CocoaPods使用专题 by h.l

    cocoaPods安装 CocoaPods安装和使用教程(code4app) cocoapods使用问题解决 cocoapods慢如何解决? CocoaPods停在Analyzing dependen ...

  9. iOS证书(.p12)和描述文件(.mobileprovision)生成制作教程 By h.l

    iOS证书(.p12)和描述文件(.mobileprovision)制作 证书类型分为2种,开发证书和发布证书 1.开发证书(iOS Certificates (Development))(用于真机调 ...

随机推荐

  1. 如何使用Navicat连接宝塔面板上安装的mysql数据库?

    运行环境描述 阿里云ECS 系统:CentOS Linux 7.4.1708 (Core) 宝塔面板: 6.9.0 数据库:MySQL 5.7.19 Navicat 远程连接 Navicat报错信息: ...

  2. HTML5 纯CSS3实现正方体旋转3D效果

    实现效果: 实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  3. Layui 的内置jquery 版本

    //layui-v2.4.5 的内置jquery 版本. console.log(layui.$.fn.jquery);//=> 1.12.3 可以使用内置jq的方法: 方法一: layui.u ...

  4. Java中常见的转义字符

    转移字符对应的英文是escape character  , 转义字符串(Escape Sequence)字母前面加上捺斜线"\"来表示常见的那些不能显示的ASCII字符.称为转义字 ...

  5. Java中关于super关键字的作用

    在子类继承父类中,一般有一行super的语句,需要记住三种使用方法: 1.super.变量/对象名: 使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作 2.super.方法名(): 直接 ...

  6. MySQL入门安装,及环境配置,初始化教程

    一.MySQL安装(win64) 免费的社区版下载地址:https://dev.mysql.com/downloads/mysql 接着会跳到这个页面 下载完后,我们将 zip 包解压到相应的目录,这 ...

  7. docker学习:docker三要素

    镜像 docker 镜像(image)就是一个只读的模板.镜像可以用来创建docker容器,一个镜像可以创建很多容器 容器 docker 利用容器(Container)独立运行的一个或者一组应用.容器 ...

  8. 一文让你明白Redis持久化(RDB、AOF)

    为什么要持久化 Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘中,那么一旦服务器进程退出,服务器的数据库状态就会消失(即断电即失).为了保证数据不丢失,我们需要将 内存中的数据存储到磁盘 ...

  9. boot项目打包剔除配置文件(打包优化)

    背景: 最近在项目开发中,在本地开发和线上部署的时候总是切换dev和pro环境,项目多了改起来还是很麻烦的,以下记录下boot项目的打包优化,打包的时候剔除配置文件,然后将配置文件手动放到线上,线上项 ...

  10. 【Java】多线程入门

    Java多线程学习(入门) 前言 目前对于线程的了解仅仅停留在学习python的threading库,很多线程的概念没有真正弄清楚,所以选择来系统性的学习多线程.那么这次选择的是Java的多线程学习, ...