今天了解了一下 NSKeyedArchiver ,这个玩意
之前一直用NSUserDefault ,没有最low只有更 low
下面说代码逻辑
登录获取用户信息进行归档,使用时候取出,解档
本次流程走下来遇到了好多问题,别人都在简书各种解说,我这却提出好多问题,实属不该 但技术有限,有大拿路过留下点东西就更好不过了
第一个问题
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)
写的不怎么样,有路过看不过眼的,愿意骂就骂两句吧