zoukankan      html  css  js  c++  java
  • 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()方法

  • 相关阅读:
    Linux内核设计与实现 总结笔记(第五章)系统调用
    Linux内核设计与实现 总结笔记(第四章)进程调度
    Linux内核设计与实现 总结笔记(第三章)进程
    Linux内核设计与实现 总结笔记(第二章)
    4412 移植x264并且YUV422转x264
    4412 使用usb摄像头拍照YUYV格式
    LDD3 第15章 内存映射和DMA
    LDD3 第13章 USB驱动程序
    ldd3 第12章 PCI驱动程序
    4412 移植mpu9250尝试
  • 原文地址:https://www.cnblogs.com/foxting/p/4657771.html
Copyright © 2011-2022 走看看