• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在项目中可能我们需要保存一些数据到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()方法


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Moving Swiftly(从OC切换到Swift)发布时间:2022-07-13
下一篇:
[Swift]LeetCode174.地下城游戏|DungeonGame发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap