Swift 归档解档初探

今天了解了一下 NSKeyedArchiver ,这个玩意

之前一直用NSUserDefault ,没有最low只有更 low

下面说代码逻辑

登录获取用户信息进行归档,使用时候取出,解档


整个model 类

本次流程走下来遇到了好多问题,别人都在简书各种解说,我这却提出好多问题,实属不该 但技术有限,有大拿路过留下点东西就更好不过了

第一个问题 

MJExtension 用swift 字典转模型之后模型数据为空,各种搜资料才知道 是oc的MJExtension识别不了swift中的属性 属性前得加 @objc 有没有其他办法,目前还不确定

第二个问题

mj_encode 这个玩意不知道咋用的,智商问题呀,现在也不知道,留个坑,日后回来填

第三个问题,本来想的是archiver直接存储model类,没想不行而且直接报错,encodeWithCoder:]: unrecognized selector sent to instance 0x7fe4f28a8e00

查资料说是archiver不支持swift 中的某个类型,然后我把 dic中的所有数据全部转换成string格式的也还是不行,所以才初次下册,直接存储字典,取值是转模型

归档

let filePath = fillPath("name")

let archive = "data"

 let archiverData =NSMutableData()

 let archiver =NSKeyedArchiver.init(forWritingWith: archiverData)

  archiver.encode(archive, forKey:"key")

archiver.finishEncoding()

if archiverData.write(to:URL.init(fileURLWithPath: pathName!), atomically:true) {

            print("归档成功")

        }else{

            print("写入失败")

        }


解档:

var user =YSUser()

        let pathName = user.fillPath(name:"name")

        let data =NSData.init(contentsOfFile: pathName)

        let unChiver =NSKeyedUnarchiver.init(forReadingWith: data!asData)

        let dic = unChiver.decodeObject(forKey:"key")

        user =YSUser.mj_object(withKeyValues: dic)


写的不怎么样,有路过看不过眼的,愿意骂就骂两句吧

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、归档的基本概念 之前将数据保存本地,只能是字符串、数组、字典、NSNuber、BOOL等容器类对象对象,不能将...
    空白Null阅读 5,247评论 1 10
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,160评论 1 32
  • Foundation框架的归档功能 将对象存储转换为二进制序列的过程成为归档、打包或编码,逆变换称为解档、解码或对...
    西门淋雨阅读 1,399评论 0 0
  • iOS应用数据存储的常用方式 XML属性列表(plist)归档 Preference(偏好设置) NSKeyedA...
    搁浅的青蛙阅读 458评论 0 0
  • 一、归档介绍 1.归档是指用某种格式来保存一个或多个对象,以便以后还原这些对象的过程。归档是将数据持久化的一种方式...
    lilinjianshu阅读 873评论 0 0