swift3.0归档和解档

1.对用户的模型数据(自定义类:HCUserModel)进行归档和解档

1.1 需要遵循NSCoding协议

1.2 需要实现func encode(with aCoder: NSCoder){}归档方法

1.3需要实现 required init(coder aDecoder: NSCoder){}解档方法

1.4 重写init方法

2.HCUserModel的数据内容如下:

import UIKit


class HCUserModel: NSObject,NSCoding {

    

    var id:Int?

    var nickname:String?

    var phone:String?

    var account:String?

    var password:String?

    var type:Int?

    var icon:String?

    var attentionnumber:Int?

    var registertime:String?

    var qrcode:String?

    var signature:String?

    var dynamicstruts:Int?

    var score:Int?

    

    // MARK:- 处理需要归档的字段

    func encode(with aCoder:NSCoder) {

        

        aCoder.encode(id, forKey:"id")

        aCoder.encode(nickname, forKey:"nickname")

        aCoder.encode(phone, forKey:"phone")

        aCoder.encode(account, forKey:"account")

        aCoder.encode(password, forKey:"password")

        aCoder.encode(type, forKey:"type")

        aCoder.encode(icon, forKey:"icon")

        aCoder.encode(attentionnumber, forKey:"attentionnumber")

        aCoder.encode(registertime, forKey:"registertime")

        aCoder.encode(qrcode, forKey:"qrcode")

        aCoder.encode(signature, forKey:"signature")

        aCoder.encode(dynamicstruts, forKey:"dynamicstruts")

        aCoder.encode(score, forKey:"score")

    }

    

    // MARK:- 处理需要解档的字段

    requiredinit(coder aDecoder:NSCoder) {

        super.init()

        id = aDecoder.decodeObject(forKey:"id")as?Int

        nickname = aDecoder.decodeObject(forKey:"nickname")as?String

        phone = aDecoder.decodeObject(forKey:"phone")as?String

        account = aDecoder.decodeObject(forKey:"account")as?String

        password = aDecoder.decodeObject(forKey:"password")as?String

        type = aDecoder.decodeObject(forKey:"type")as?Int

        icon = aDecoder.decodeObject(forKey:"icon")as?String

        attentionnumber = aDecoder.decodeObject(forKey:"attentionnumber")as? Int

        registertime = aDecoder.decodeObject(forKey:"registertime")as?String

        qrcode = aDecoder.decodeObject(forKey:"qrcode")as?String

        signature = aDecoder.decodeObject(forKey:"signature")as?String

        dynamicstruts = aDecoder.decodeObject(forKey:"dynamicstruts")as? Int

        score = aDecoder.decodeObject(forKey:"score")as?Int

    }

    overrideinit() {

        super.init()

    }

}


3. 实现归档把模型保存到本地Document文件夹:
3.1 获取本地Document路径,一般路径都设为全局变量,方便解档直接使用:

let userAccountPath ="\(NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory,

FileManager.SearchPathDomainMask.userDomainMask,true).first!)/userAccount.data"


3.2 对获取到的模型进行归档操作,要注意模型必须是确定的类型,如果是可选类型会报发送未识别的消息的错误(切记)

NSKeyedArchiver.archiveRootObject(userModel!, toFile:userAccountPath)


4.实现解档从Document文件夹获取本地模型数据

4.1 判断Document文件夹下是否有已保存好的模型,有的话就解档取出模型

 if NSKeyedUnarchiver.unarchiveObject(withFile:userAccountPath) !=nil {

            

            userModel =NSKeyedUnarchiver.unarchiveObject(withFile:userAccountPath)as? HCUserModel

        }





  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值