• SWIFT中将信息保存到plist文件内


    在项目中可能我们需要保存一些数据到plist文件中,以下就本人在学习过程中的笔记,不成熟的地方请指出。

    可能我有一个类叫做Student

    import UIKit
    
    class Student: NSObject {
        var text:String
        var age:Bool
        init(text:String,age:Int) {
            self.text = text
            self.age = age
        }
        
        //从nsobject中解析回来
        init(coder aDecoder:NSCoder){
            self.text = aDecoder.decodeObjectForKey("Text") as! String
            self.age = aDecoder.decodeObjectForKey("Age") as! Int
        }
        
        //编码成object
        func encodeWithCoder(aCoder:NSCoder){
            aCoder.encodeObject(text, forKey: "Text")
            aCoder.encodeObject(checked, forKey: "Age")
        }
        
    }
    

     encodeWithCoder方法中,每一个属性设置为一个关键字,用于序列化编码,以便我们在init(coder aDecoder:NSCoder)中解析回来

    以下是两个保存用加载plist数据的方法

    var students:[Student] = [Student]()
    func loadStudentsData() {
            let path = self.dataFilePath()
            //声明文件管理器
            let defaultManager = NSFileManager()
            if defaultManager.fileExistsAtPath(path) {
                let data = NSData(contentsOfFile: path)
                //解码器
                let archive = NSKeyedUnarchiver(forReadingWithData: data!)
                students = archive.decodeObjectForKey("Students") as! Array
                //结束解码
                archive.finishDecoding()
            } else {
              saveStudentsData()
            }
        }
        
        func saveStudentsData() {
            var data = NSMutableData()
            //聲明一個歸檔處理對象
            var archive = NSKeyedArchiver(forWritingWithMutableData: data)
            //將arrData進行編碼
            archive.encodeObject(students, forKey: "Students")
            archive.finishEncoding()
            //數據寫入
            data.writeToFile(dataFilePath(), atomically: true)
        }
    

     在UI启动的时候加入loadStudentsData()方法,每次有改变students数组的时候调用saveStudentsData()方法

  • 相关阅读:
    SSL配置
    PHPStorm 打开时闪退的问题
    【网址链接】
    js中将string转换为number
    HTML特效代码大全
    前端面试题-重要
    元素框默认的计算方式
    html中有趣的显示出柠檬的方法
    html中圆角方法border-top-left-radius
    html+css显示出三角形方法transparent
  • 原文地址:https://www.cnblogs.com/foxting/p/4657771.html
Copyright © 2020-2023  润新知