Swift-->NSKeyedArchiver与NSKeyedUnarchiver数据存档读取(文件)

Swift-->NSKeyedArchiver与NSKeyedUnarchiver数据存档读取(文件),第1张

概述本文介绍Swift2.2 中, 创建文件/文件夹, 将NSObject对象存档到文件, 并从存档文件读取对象. 1:可存档对象声明 //必须要继承NSObject对象,并且实现NSCoding协议class DataBean: NSObject, NSCoding { var image: UIImage? var name: String var rate: Int

本文介绍Swift2.2 中,创建文件/文件夹,将NSObject对象存档到文件,并从存档文件读取对象.

1:可存档对象声明

//必须要继承NSObject对象,并且实现NSCoding协议class DataBean: NSObject,NSCoding {    var image: UIImage?    var name: String    var rate: Int    init?(name: String,rate: Int,image: UIImage?) {        self.image = image        self.rate = rate        self.name = name        super.init()//注意        if name.isEmpty || rate < 0 {            return nil        }    }    //必须实现的构造方法    required convenIEnce init?(coder aDecoder: NSCoder) {        /decode *** 作        let image = aDecoder.decodeObjectForKey(DataKey.imageKey) as! UIImage        let name = aDecoder.decodeObjectForKey(DataKey.nameKey) as! String        let rate = aDecoder.decodeIntegerForKey(DataKey.rateKey)        self.init(name: name,rate: rate,image: image)    }    //必须实现的encode方法    func encodeWithCoder(aCoder: NSCoder) {        aCoder.encodeObject(image,forKey: DataKey.imageKey)        aCoder.encodeObject(name,forKey: DataKey.nameKey)        aCoder.encodeInteger(rate,forKey: DataKey.rateKey)    }}//全局变量Keystruct DataKey {    static let imageKey = "image"    static let nameKey = "name"    static let rateKey = "rate"}

2:存档路径的选择

//文件存档的文件夹,类似: /Users/angcyo/library 这样的路径static var documentDirectory: NSURL {    //文件管理对象    let fileManager = NSfileManager.defaultManager()    //获取documentationDirectory对应的文件夹,类似/Users/angcyo/library/documentation/ 这样的    //当然,你可以创建自定义的文件夹,或者其他文件夹路径...详情参考api文档说明.    let docPath = fileManager.URLsForDirectory(.documentationDirectory,inDomains: .UserDomainMask).first!    //如果文件夹不存在,肯定是不行的. 所以...判断一下.    if !fileManager.fileExistsAtPath(docPath.path!) {        //创建文件夹...        try! fileManager.createDirectoryAtPath(docPath.path!,withIntermediateDirectorIEs: true,attributes: nil)    }    return docPath    }//文件存档的文件名 (全路径),文件允许不存在,但是文件所在的文件夹,一定要存在,否则会保存失败.static let DataPathUrl = documentDirectory.URLByAppendingPathComponent("data_bean_s")

3:对象的写入和读取

//数据数组var datas = [DataBean]()// MARK: 保存func saveDataTofile() {    let isSuccessSave = NSKeyedArchiver.archiveRootObject(datas,tofile: DataBean.DataPathUrl.path!)    if isSuccessSave {        print("数据保存成功:\(DataBean.DataPathUrl.path!)")    } else {        print("数据保存失败:\(DataBean.DataPathUrl.path!)")    }}// MARK: 读取func loadDataFromfile() -> [DataBean]? {    return NSKeyedUnarchiver.unarchiveObjectWithfile(DataBean.DataPathUrl.path!) as? [DataBean]}

源代码: https://github.com/angcyo/TableViewDemo/tree/NSKeyedArchiver

至此: 文章就结束了,如有疑问: QQ群 AndroID:274306954 Swift:399799363 欢迎您的加入.

总结

以上是内存溢出为你收集整理的Swift-->NSKeyedArchiver与NSKeyedUnarchiver数据存档读取(文件)全部内容,希望文章能够帮你解决Swift-->NSKeyedArchiver与NSKeyedUnarchiver数据存档读取(文件)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1073085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存