swift 之归档和解归档

数据持久化的方式有很多种,归档是其中的一种,说起数据持久化的方式,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对象的可选类型

最新文章

  1. 05_整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用说明
  2. udp穿透简单讲解和实现(Java)
  3. 玩转linux文件(重点)
  4. EDIUS分别输出视频和音频的教程
  5. u-boot board_uart_init流程
  6. java中的包有那些 ???
  7. FPGA的LE数与门数的关系(转)
  8. DBS小结
  9. AOP TP框架有感
  10. (Review cs231n) Spatial Localization and Detection(classification and localization)
  11. include和require的区别
  12. 视频人脸检测——Dlib版(六)
  13. js格式化时间
  14. Educational Codeforces Round 26 B,C
  15. transclude
  16. 基于Java+SparkStreaming整合kafka编程
  17. 第15课-数据库开发及ado.net-数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库
  18. iOS开发-消息通知机制(NSNotification和NSNotificationCenter)
  19. MVC 扩展RadioButtonListFor和CheckBoxListFor
  20. Boost.Coroutine2:学习使用Coroutine(协程)

热门文章

  1. HTTP请求和MIME介绍
  2. js函数知识
  3. 《.NET 设计规范》第 8 章:使用规范
  4. spring重要类说明
  5. java之Servlet监听器Listener
  6. 浅谈计算机中的IO模型
  7. 使用.bat来执行Java程序基础
  8. python学习1:程序元素和基本使用方法(跟随mooc学习)
  9. vue 使用Jade模板写html,stylus写css
  10. java生产者与消费者模式