IOS(swift)-数据持久化-Preference
来源:互联网 发布:北大青鸟学java编程 编辑:程序博客网 时间:2024/06/04 18:26
Preference 使用讲解
Preference简单介绍
Preference是IOS实现数据持久化的一种方式。
- 存储位置:Library/Preference
- 存储格式:key-value
- 存储类型:后面详细介绍
- 用途:保存应用的偏好设置(类似Android的SharedPreference)
- 注意:iTunes同步设备时会备份该目录。
使用介绍
官方为我们提供了UserDefaults类,可以很方便的存取数据。
获取UserDefaults实例
var userDefault = UserDefaults.standard;
存数据
userDefault.set(value, forKey: "key");/* 立即同步,保存数据 如果不调用synchronize()方法的花,系统会根据I/O情况不定时刻的保存到文件,所以如果想要立即保存数据的话,需要调用synchronize() */userDefault.synchronize();
读数据
let value1 = userDefault.string(forKey: "key1")!; let value2 = userDefault.integer(forKey: "key2");
支持存储的数据类型
1. 系统定义的数据类型
- 支持:
String、 Number、Date、 Array、Dictionary、Bool、Integer、Float
等系统定义的数据类型 - 存取方式:直接使用UserDefaults的
set(value: xxx, forKey: String)
方法进行存储。
2. 自定义类型
自定义的数据类型需要 转换成Data,再使用UserDefaults的set(Any?, forKey: String)
方法进行存储。
那么怎样将自定义的类和Data类型相互转换呢?
自定义类实现NSCoding协议
NSCoding协议有两个方法:
init?(coder aDecoder: NSCoder)
encode(with aCoder: NSCoder)
//解码required init?(coder aDecoder: NSCoder) { self.name = aDecoder.decodeObject(forKey: "name") as! String; self.age = aDecoder.decodeInteger(forKey: "age");}//编码:key-value形式func encode(with aCoder: NSCoder) { aCoder.encode(name, forKey: "name"); aCoder.encode(age, forKey: "age");}
实现了NSCoding协议后,该类便可转换成Data类型
- 自定义类转 Data:
NSKeyedArchiver.archivedData(withRootObject: youClass);
- Data 转自定义类:
NSKeyedUnarchiver.unarchiveObject(with: data) as! youClass;
- 自定义类转 Data:
将自定义类转换成Data类型后,便可使用UserDefaults的
set(Any?,forKey: String)
方法进行存储了。userDefault.set(data, forKey: "history");
同样,使用UserDefaults的
data(forKey: String)
来获取数据。let data = userDefault.data(forKey: "history");
阅读全文
0 0
- IOS(swift)-数据持久化-Preference
- 数据持久化之preference
- 数据持久化之preference
- iOS 数据持久化之KeyChain(Swift Demo)
- IOS线程数据篇6之数据持久化plist、preference、NSKeyedArchiver(NSCoding)、Core Data、SQLite3
- IOS 数据持久化
- iOS 数据持久化
- ios数据持久化
- IOS数据持久化
- iOS数据持久化
- ios数据持久化
- iOS数据持久化
- iOS 数据持久化
- iOS 数据持久化
- iOS数据持久化
- iOS数据持久化
- iOS数据持久化
- iOS数据持久化
- java 启动线程三种方式
- Hadoop中Text类型 与 String的区别
- Win7搭建FTP服务器后局域网电脑无法访问的解决办法
- Java语言程序设计(基础篇)十四章习题 显示图像
- android scrollview 滑动 改变标题栏颜色
- IOS(swift)-数据持久化-Preference
- C语言获取文件大小
- GSOAP工具的简单使用
- 判断一个字符串是否包含一个子串
- 指针和数组的对比
- 还原vim默认配置或者卸载vim
- android帧动画代码示例
- Sukodu Solver(深搜)
- iOS 视觉差