Swift - 本地数据的保存与加载(使用NSCoder将对象保存到.plist文件)

Swift - 本地数据的保存与加载(使用NSCoder将对象保存到.plist文件),第1张

概述下面通过一个例子将联系人数据保存到沙盒的“documents”目录中。(联系人是一个数组集合,内部为自定义对象)。 功能如下: 1,点击“保存”将联系人存入userList.plist文件中 2,点击“读取”从数据文件中加载解析出联系人 注意: 1,本例使用了NSCoder,这个封装了许多技术细节,使用它我们可以很轻易的将对象写到文件中,也可以用它将文件中的对象转换回来。 2,自定义对象必须添加如 下面通过一个例子将联系人数据保存到沙盒的“documents”目录中。(联系人是一个数组集合,内部为自定义对象)。
功能如下: 1,点击“保存”将联系人存入userList.pList文件中 2,点击“读取”从数据文件中加载解析出联系人 注意: 1,本例使用了NSCoder,这个封装了许多技术细节,使用它我们可以很轻易的将对象写到文件中,也可以用它将文件中的对象转换回来。 2,自定义对象必须添加如下两个方法,这个才能顺利的被序列化编码存储和读取。 @H_403_103@
//从nsobject解析回来 init (coder aDecoder: NSCoder !){ self .name=aDecoder.decodeObjectForKey( "name" ) as String .phone=aDecoder.decodeObjectForKey( "Phone" String } //编码成object func encodeWithCoder(aCoder: !){ aCoder.encodeObject(name,forKey: ) aCoder.encodeObject(phone,monospace!important; min-height:inherit!important">) }
具体代码如下: --- VIEwController.swift --- importUIKit classVIEwController:UIVIEwController{ vardataModel =DataModel() overrIDevIEwDIDLoad() { super.vIEwDIDLoad()// Do any additional setup after loading the vIEw,typically from a nib. //初始化模拟数据 onCreateData() } //创建模拟数据 onCreateData(){ dataModel.userList.append(UserInfo(name:"张三",phone:"1234")) "李四""1212")) "航歌""3525")) } //保存数据 @IBActionsaveData(sender:AnyObject) { dataModel.saveData() } //读取数据 loadData(sender:) { dataModel.loadData() } dIDReceiveMemoryWarning() { .dIDReceiveMemoryWarning() // dispose of any resources that can be recreated. } } @H_403_103@

--- DataModel.swift --- NSObject userList = []() overrIDe @H_893_301@(){ . @H_893_301@()println("沙盒文件夹路径:\(documentsDirectory())""数据文件路径:\(datafilePath())"} //保存数据 saveData() { letdata =NSMutableData() @H_403_340@//申明一个归档处理对象 archiver =NSKeyedArchiver(forWritingWithMutableData: data) //将Lists以对应CheckList关键字进行编码 archiver.encodeObject(userList,monospace!important; min-height:inherit!important; color:blue!important">"userList") //编码结束 archiver.finishEnCoding() //数据写入 data.writetofile(datafilePath(),atomically:true) } //读取数据 loadData() { //获取本地数据文件地址 path =.datafilePath() //声明文件管理器 defaultManager =NSfileManager() @H_805_404@//通过文件地址判断数据文件是否存在 ifdefaultManager.fileExistsAtPath(path) { //读取文件数据 NSData(contentsOffile: path) //解码器 unarchiver =NSKeyedUnarchiver(forReadingWithData: data!) //通过归档时设置的关键字CheckList还原Lists userList = unarchiver.decodeObjectForKey(asArray //结束解码 unarchiver.finishDeCoding() } } //获取沙盒文件夹路径 documentsDirectory()->String{ paths =NSSearchPathForDirectorIEsInDomains(NSSearchPathDirectory.documentationDirectoryNSSearchPathDomainMaskUserDomainMask) documentsDirectory:= paths.firstString returndocumentsDirectory } //获取数据文件地址 datafilePath ()->{ return.documentsDirectory().stringByAppendingString("userList.pList") } --- UserInfo.swift ---
@H_403_103@
name: phone: String //构造方法 (name: = "" ){ .name = name .phone = phone () } //从nsobject解析回来 !){ as ! String String } //编码成object !){ ) }
总结

以上是内存溢出为你收集整理的Swift - 本地数据的保存与加载(使用NSCoder将对象保存到.plist文件)全部内容,希望文章能够帮你解决Swift - 本地数据的保存与加载(使用NSCoder将对象保存到.plist文件)所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1079450.html

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

发表评论

登录后才能评论

评论列表(0条)

保存