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)


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

你可能感兴趣的:(Swift 归档解档初探)