数据持久化__归档
来源:互联网 发布:.net core 2.0 知乎 编辑:程序博客网 时间:2024/05/20 00:11
iOS提供的数据持久化方式有:SQLiteCoreData属性列表、NSUserDefault对象归档。
这里来简单介绍下iOS开发中的对象归档:
对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化)使用的时候读取该文件的保存路径读取文件的内容(也称为接档,反序列化)
对象归档的文件是保密的磁盘上无法查看文件中的内容,而属性列表是明文的可以查看)
对象归档有两种方式:1、对foundat中对象进行归档 2、自定义对象归档
1、简单对象归档
使用两个类:NSKeyedA richivNSKeyedUnarchiver
NSStr*homeDirectori=NSHomeDirectori; //获取根目录
NSStringhomePath=[homeDirectoristringByA ppendingPathComponent:@"自定义文件名,如test.archiver"];
NSA rrai*arrai=@[@"abc",@"123",@12];
Boolflag=[NSKeyedA richivarchiveRootObject:arraitoFile:homePath];
ifflag{
NSLog@"归档成功!";
}
读取归档文件的内容:
NSA rrai*arrai=[NSKeyedUnarchivunarchiveObjectWithFile:homePath];
NSLog@"%@",arrai;
这样就简单了实现了将NSA rrai对象的归档和解档。
但是这种归档方式有个缺点,就是一个文件只能保存一个对象,如果有多个对象要保存的话那岂不是有n多个文件,这样不是很适合的所以有了下面这种归档方式。
2、自定义内容归档
归档:
使用NSData实例作为归档的存储数据
添加归档的内容---使用键值对
完成归档
解归档:
从磁盘读取文件,生成NSData实例
根据NSData实例和初始化解归档实例
解归档,根据kei访问value
NSStr*homeDirectori=NSHomeDirectori;//获取根目录
NSStringhomePath=[homeDirectoristringByA ppendingPathComponent:@"自定义文件名,如test.archiver"];
NSMutableData*data=[[NSMutableDataalloc]init];
NSKeyedA rchiv*archiv=[[NSKeyedA rchivalloc]initForWritingWithMutableData:data];
[archivencodeFloat:50forKey:@"age"];
[archivencodeObject:@"jack"forKey:@"name"];
[archivfinishEncoding]; //结束添加对象到data中
[archivrelease];
[datawriteToFile:homePath atomically:YES];//将data写到文件中保存在磁盘上
NData*content=[NSDatadataWithConenteOfFile:homePath];
NSKeyedUnarchiv*unarchiv=[[NSKeyedUnarchivalloc]initForReadingWithData:content];
floatag=[unarchivdecodeFloatForKey:@"age"];
NSStr*name=[unarchivdecodeObjectForKey:@"name"];
- 数据持久化__归档
- 数据持久化,归档,反归档
- iOS 归档持久化数据
- 数据持久化-对象归档
- NSUserDefaults 归档,数据持久化
- 数据持久化之归档
- iOS数据持久化 归档
- IOS数据持久化--归档
- ios24-数据持久化-对象归档
- NSKeyedArchiver、NSKeyedUnarchiver 数据持久化归档
- NSCoding归档数据持久化存储
- iOS数据持久化之归档
- iOS 数据持久化-归档
- IOS数据持久化之对象归档
- IOS数据持久化之归档NSKeyedArchiver
- iOS开发 数据持久化-归档
- 数据持久化-属性列表、归档、NSUserDefaults
- iOS数据持久化之归档
- Windows 10 安装 Oracle 10g
- Codeforces Round #367 (Div. 2) C. Hard problem(简单DP)
- C++11 强类型enum
- 2016.12.14重学C语言记录篇--2
- Unity性能优化之CPU篇
- 数据持久化__归档
- docker初使用小结
- Linux中logrotate的使用
- wepack英文文档阅读笔记--简介与模块系统
- socket TCP编程中connect的一些坑 .
- JDK环境变量以及tomcat配置,maven配置
- 虚拟器安装过程
- PHP ajax访问服务器 $_SESSION数据丢失解决方案
- Object.defineproperty实现数据和视图的联动