Swift - 本地数据的保存与加载(使用NSCoder将对象保存到.plist文件)
下面通过一个例子将联系人数据保存到沙盒的“documents”目录中。(联系人是一个数组集合,内部为自定义对象)。
|
1
2
3
4
5
6
7
8
9
10
11
|
//从nsobject解析回来init(coder aDecoder:NSCoder!){ self.name=aDecoder.decodeObjectForKey("Name") as String self.phone=aDecoder.decodeObjectForKey("Phone") as String}//编码成objectfunc encodeWithCoder(aCoder:NSCoder!){ aCoder.encodeObject(name,forKey:"Name") aCoder.encodeObject(phone,forKey:"Phone")} |
--- ViewController.swift ---
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import UIKitclass ViewController: UIViewController { var dataModel = DataModel() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. //初始化模拟数据 onCreateData() } //创建模拟数据 func onCreateData(){ dataModel.userList.append(UserInfo(name: "张三", phone: "1234")) dataModel.userList.append(UserInfo(name: "李四", phone: "1212")) dataModel.userList.append(UserInfo(name: "航歌", phone: "3525")) } //保存数据 @IBAction func saveData(sender:AnyObject) { dataModel.saveData() } //读取数据 @IBAction func loadData(sender:AnyObject) { dataModel.loadData() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }} |
--- DataModel.swift ---
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
import UIKitclass DataModel: NSObject { var userList = [UserInfo]() override init(){ super.init() println("沙盒文件夹路径:\(documentsDirectory())") println("数据文件路径:\(dataFilePath())") } //保存数据 func saveData() { var data = NSMutableData() //申明一个归档处理对象 var archiver = NSKeyedArchiver(forWritingWithMutableData: data) //将lists以对应Checklist关键字进行编码 archiver.encodeObject(userList, forKey: "userList") //编码结束 archiver.finishEncoding() //数据写入 data.writeToFile(dataFilePath(), atomically: true) } //读取数据 func loadData() { //获取本地数据文件地址 let path = self.dataFilePath() //声明文件管理器 let defaultManager = NSFileManager() //通过文件地址判断数据文件是否存在 if defaultManager.fileExistsAtPath(path) { //读取文件数据 let data = NSData(contentsOfFile: path) //解码器 let unarchiver = NSKeyedUnarchiver(forReadingWithData: data!) //通过归档时设置的关键字Checklist还原lists userList = unarchiver.decodeObjectForKey("userList") as Array //结束解码 unarchiver.finishDecoding() } } //获取沙盒文件夹路径 func documentsDirectory()->String { var paths = NSSearchPathForDirectoriesInDomains( NSSearchPathDirectory.DocumentationDirectory,NSSearchPathDomainMask.UserDomainMask,true) var documentsDirectory:String = paths.first as String return documentsDirectory } //获取数据文件地址 func dataFilePath ()->String{ return self.documentsDirectory().stringByAppendingString("userList.plist") }} |
--- UserInfo.swift ---
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import UIKitclass UserInfo: NSObject { var name:String var phone:String //构造方法 init(name:String="",phone:String=""){ self.name = name self.phone = phone super.init() } //从nsobject解析回来 init(coder aDecoder:NSCoder!){ self.name=aDecoder.decodeObjectForKey("Name") as! String self.phone=aDecoder.decodeObjectForKey("Phone") as! String } //编码成object func encodeWithCoder(aCoder:NSCoder!){ aCoder.encodeObject(name,forKey:"Name") aCoder.encodeObject(phone,forKey:"Phone") }} |
Swift - 本地数据的保存与加载(使用NSCoder将对象保存到.plist文件)的更多相关文章
- iOS开发——数据持久化&本地数据的存储(使用NSCoder将对象保存到.plist文件)
本地数据的存储(使用NSCoder将对象保存到.plist文件) 下面通过一个例子将联系人数据保存到沙盒的“documents”目录中.(联系人是一个数组集合,内部为自定义对象). 功能如下: ...
- SWIFT中将信息保存到plist文件内
在项目中可能我们需要保存一些数据到plist文件中,以下就本人在学习过程中的笔记,不成熟的地方请指出. 可能我有一个类叫做Student import UIKit class Student: NSO ...
- tensorflow 模型保存与加载 和TensorFlow serving + grpc + docker项目部署
TensorFlow 模型保存与加载 TensorFlow中总共有两种保存和加载模型的方法.第一种是利用 tf.train.Saver() 来保存,第二种就是利用 SavedModel 来保存模型,接 ...
- MindSpore保存与加载模型
技术背景 近几年在机器学习和传统搜索算法的结合中,逐渐发展出了一种Search To Optimization的思维,旨在通过构造一个特定的机器学习模型,来替代传统算法中的搜索过程,进而加速经典图论等 ...
- tensorflow实现线性回归、以及模型保存与加载
内容:包含tensorflow变量作用域.tensorboard收集.模型保存与加载.自定义命令行参数 1.知识点 """ 1.训练过程: 1.准备好特征和目标值 2.建 ...
- Tensorflow模型保存与加载
在使用Tensorflow时,我们经常要将以训练好的模型保存到本地或者使用别人已训练好的模型,因此,作此笔记记录下来. TensorFlow通过tf.train.Saver类实现神经网络模型的保存和提 ...
- TensorFlow保存、加载模型参数 | 原理描述及踩坑经验总结
写在前面 我之前使用的LSTM计算单元是根据其前向传播的计算公式手动实现的,这两天想要和TensorFlow自带的tf.nn.rnn_cell.BasicLSTMCell()比较一下,看看哪个训练速度 ...
- [深度学习] Pytorch(三)—— 多/单GPU、CPU,训练保存、加载模型参数问题
[深度学习] Pytorch(三)-- 多/单GPU.CPU,训练保存.加载预测模型问题 上一篇实践学习中,遇到了在多/单个GPU.GPU与CPU的不同环境下训练保存.加载使用使用模型的问题,如果保存 ...
- [PyTorch 学习笔记] 7.1 模型保存与加载
本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson7/model_save.py https://githu ...
随机推荐
- Solr4.7缓存技术
磁盘IO往往是计算机系统响应速度的一个突出瓶颈,搜索引擎查询很平凡,减少搜索过程中的磁盘IO对提升搜索响应速度无疑有莫大的帮助,在solr中,提供自带的缓存机制.我们只需要在solrconfig.xm ...
- 基于visual Studio2013解决C语言竞赛题之0524职工年龄
题目
- 常见makefile写法
原文地址:blog.csdn.net/ghostyu/article/details/7755177 1.目标名称,摆脱手动设置目标名称 TARGET = $(notdir $(CURDIR)) al ...
- tomcat设置IP地址或者域名访问
链接地址:http://jingyan.baidu.com/article/7e440953dc096e2fc0e2ef1a.html 本文介绍如何通过修改tomcat的配置,实现通过IP地址或者域名 ...
- 第一个hibernate文件 xml配置方法
package com.entity; public class User { private String username; private String password; private In ...
- vim添加删除多行注释
CTRL+V进入可视化模式 移动光标上移或者下移,选中多行的开头 选择完毕后,按大写的的I键,此时下方会提示进入“insert”模式,输入你要插入的注释符 最后按ESC键,你就会发现多行代码已经被注释 ...
- 基于visual Studio2013解决C语言竞赛题之0611素数排序
题目
- 立贴读 《CLR》
弱弱的说,我要开始读<CLR>这本书了,怕自己不能坚持下来,特立贴监督自己,本来是大牛们涉及的区域,现在好朋友的鼓励下,勇敢的踏入,如有错误,还请各位指正.
- 深入理解 Spring 事务原理【转】
本文转自码农网 – 吴极心原创 连接地址:http://www.codeceo.com/article/spring-transactions.html 一.事务的基本原理 Spring事务的本质其 ...
- 使用MDK将STM32的标准库编译成lib使用
1 .使用MDK将STM32的标准库编译成lib使用[图文] http://www.cnblogs.com/zyqgold/p/3189719.html