美文网首页
swift 之归档和解归档

swift 之归档和解归档

作者: Harry_Coding | 来源:发表于2017-07-25 11:22 被阅读100次

数据持久化的方式有很多种,归档是其中的一种,说起数据持久化的方式,iOS 中基本有以下几种方式:sqlite存储、coredata存储、UserDefault存储、归档、plist存储、还有就是直接写入文件中。
其实归档也是将数据写入文件中,不同的是,归档是对于“对象”而言的,也就是我们将对象归档之后,归档成一个Data的类型,然后再将其写入文件中,提取的时候直接解归档就能获得想要的对象。
在用objective-c语言的时候,我想归档和解归档的思路都很清晰,那么在swift中这种思路依然是没有变得,但是有些小细节需要我们注意一下。归档和解归档的一般思路就是:
1.遵循NSCoding协议,并且实现两个必须的方法
2.应用NSKeyedArchiver归档一个对象
3.应用NSUnkeyedArchiver解归档一个对象

用到了三个类和一个协议
1>NSCoding协议,这个协议要求我们必须实现两个方法,一个是用来归档的-func encode(with aCoder: NSCoder) {}, 另外一个是用来解归档的方法required init?(coder aDecoder: NSCoder) {
super.init()
}
2>其中我们看到用到的一个类-NSCoder:这是一个专门用来归档对象属性和解归档的类
3> 还有两个比较重要的类
NSKeyedArchiver,这是一个归档类,我们可以使用他去归档一个文件,我们可以用NSKeyedArchiver.archiveRootObject(self, toFile: newPath!) 这个方法直接归档并且存入文件,也可以open class func archivedData(withRootObject rootObject: Any) -> Data 先生成data,然后自己写入文件,我比较喜欢第一种简单方便。
NSUnkeyedArchiver,这是一个解归档类,可以用NSKeyedUnarchiver.unarchiveObject(withFile: newPath!)这个方法直接获取OBject
需要注意的是:如果对象属性中有基本类型是可选类型的在解归档的时候会crash,告知解归档解出来的类型不是这个基本类型,因为他是可选类型,我的解决办法是如果能不用可选类型就不哟啊用可选类型,给一个初值就好了,或者可以用NSNumber对象的可选类型

相关文章

  • swift 之归档和解归档

    数据持久化的方式有很多种,归档是其中的一种,说起数据持久化的方式,iOS 中基本有以下几种方式:sqlite存储、...

  • iOS. swift 本地数据归档和解档

    iOS. swift 本地数据归档和解档 userDataModel 文件 代码: class MyModel: ...

  • 归档和解归档

    基本数据持久化:把OC中的基本数据存储到沙盒中。归档:把复杂类型转为data类型的过程。解归档:把data类型转为...

  • swift 归档和解档

    归档 NSCoding,实现两个方法 AccessToken 是后续所有网络访问的重要依据 /// 构造函数,一...

  • iOS 归档和解归档

    归档与解档是IOS中一种序列化与反序列化的方式。对象要实现序列化需要遵循NSCoding协议,而绝大多数Found...

  • 2021-08-20

    iOS swift NSKeyedArchiver 使用 iOS 中swift的归档与解挡 归档: 将对象按照一定...

  • iOS 归档NSKeyedArchiver

    一、归档NSKeyedArchiver和解归档NSKeyedUnarchiver 1.首先确定存储路径。 NSHo...

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

    模型对象实现归档和解档代理方法 解档 宏定义路径 归档 任何地方只要动了数组都要归档

  • iOS NSKeyedArchiver数据归档

    iOS中利用NSKeyedArchiver和NSKeyedUnarchiver进行数据的归档和解档操作。 归档 所...

  • ios中Swift的归档与解档

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

网友评论

      本文标题:swift 之归档和解归档

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