美文网首页iOS Developer小问题
iOS 归解档的简单实现

iOS 归解档的简单实现

作者: 新生代农民工No1 | 来源:发表于2017-07-13 10:05 被阅读39次

序言:

最近因为项目中需要用到自定义模型的归档,所以留意了些归解档的代码。但大多数代码都是写的比较简单模型,所以归解档 so easy!  那么问题来了,如果项目中的模型比较复杂,可能里三层外三层,你还愿意key,value的写吗?所以这里决定偷个懒,想了想那就用runtime吧!


为什么 需要用到 归档 解档呢

首先来聊聊归档解档的优势,如果模型很复杂,解析不方便,或者不利于存储数据库,那么归档则是个不错的方式。归档后,模型会以NsDate类型被写进文件中;解档后,这个模型又会被读取出来。不需要解析神马的!

实现 归解档

1,首先,自定义类要遵循协议 <NSCoding>

2.实现自定义类中归档方法:

-(void)encodeWithCoder:(NSCoder *)aCoder;

3.实现自定义类中解档方法:

- (instancetype )initWithCoder:(NSCoder *)aDecoder;

如果自定义模型里面有很多个属性,那么归解档方法里面是不是就会疯狂的写

[aCoderencodeObject:obj forKey:key] 或者 [aDecoder decodeObjectForKey:key] 方法;

所以最简单的实现就是通过运行时取获取当前类里面所有的属性,循环遍历类中所有的属性,并且 根据属性名和属性值依次调用 归解档方法;这里在对属性的赋值与取值时是用的kvc,间接调用可以避免 基础数据类型 不能通过反射机制调用set或者get方法;

下面既是核心代码:

创建一个分类NSObject (Archiving)

获取该类的所有属性 实现NSCoding

在需要归档的自定义类中导入该分类

这里归解档就已经写完,如果你还在一个个得手敲key,Value是不是会崩溃掉!

Demo的链接地址:代码地址

代码中已经把归解档的方法封装成了工具类,简单好用!

相关文章

  • iOS 归解档的简单实现

    序言: 最近因为项目中需要用到自定义模型的归档,所以留意了些归解档的代码。但大多数代码都是写的比较简单模型,所以归...

  • 归解档

    归解档操作的对象必须遵守,因为归解档是通过该协议实现的。无论是系统的类还是我们自定义的类,想要...

  • 关于swift解档的坑

    iOS中储存的方式有很多种,SQL,CoreData,文件等等 其中归解档也是一种常见的持久化储存swift归解有...

  • ios中Swift的归档与解档

    ios中Swift的归档与解档 归档 解档 init()方法 设置属性

  • iOS开发中的归解档

    首先要遵守NSCoding协议;重写两个方法:

  • ios 利用Runtime实现自动化归解档

    1.oc版本 2.swift 版本 1)根据oc的方法来写; swift4的新写法;

  • Swift中Runtime实现归解档

    首先定义个名为PersonModel类,在类中实现NSCoding方法 class PersonModel:NSO...

  • iOS 解档 value for key 'NS.objects

    苹果在iOS 11之后提供了新的解档方法: 当使用新的解档方法解档嵌套模型时,会报code:4864的错误解档失败...

  • iOS数据持久化--归解档

    目标:向沙盒中存储一个自定义的对象 例如model类方案:使用归解档还是直接上代码吧,说明性文字实在弱项 1.使...

  • iOS归档解档

    归档与解档是iOS中序列化与反序列化的方式,需要实现 encodeWithCoder 和 initWithCode...

网友评论

    本文标题:iOS 归解档的简单实现

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