Archiver 浅析
归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象。通常,这个过程包括将(多个)对象写入文件中,以便以后读取该对象。
两种归档数据的方法:属性列表和带键值的编码。
属性列表局限性很大,一般不适用。
-)使用NSKeyedArchiver归档
若要将各种内置类型的对象存储到文件中,不仅仅是NSString、NSArry,NSDictionary,NSSet、NSDate、NSNumber和NSData,还有他们之间的组合,利用NSKeyedArchiver归档是一种灵活的方法。这些内置数据类型都已经实现<NSCoding>协议。
二)使用NSData创建自定义归档
如果要归档自定义的数据类型,那就要在要在类定义中添加编码encodeWithCoder:方法和initWithCoder:解码方法,以实现<NSCoding >协议。编码方法应该指定如何归档想要保存的对象中的每个实例变量。对于基本的C数据类型,和对象类型都是有对应的编码解码方法。这个可以查,比如对象型decodeObject:forKey:来解码基本的Object-C类。
如果要存储所有的对象,就可以用NSData通用数据流对象类。这也是最具有通用性的方法。
使用的步骤:
第一步:确保要归档的每个自定义类都实现了<NSCoding>协议,(内置类已经已经实现,不需要担心);
第二步:设置数据区,并将其连接到一个NSKeyedArchiver对象
NSData *data=[NSMutableData data]
NSKeyedArchiver *archiver=[[NSkeyedArchiver alloc ] initForWritingMutableData:data];
第三步:归档
[arhiver ecodeObject:id forkey:@""];
........
[archiver finishEncoding];
第四步:将存档的数据区写入文件中。
例如:
[[NSUserDefaults standardUserDefaults] setObjet:data forKey:@""];
反过来也是一样;取得文件中归档数据,解码就可以了。
Archiver 浅析的更多相关文章
- SQL Server on Linux 理由浅析
		SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ... 
- 【深入浅出jQuery】源码浅析--整体架构
		最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ... 
- 高性能IO模型浅析
		高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking ... 
- netty5 HTTP协议栈浅析与实践
		一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ... 
- Jvm 内存浅析 及 GC个人学习总结
		从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ... 
- 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
		熟悉WebForm开发的朋友一定都知道,Page类必须实现一个接口,就是IHttpHandler.HttpHandler是一个HTTP请求的真正处理中心,在HttpHandler容器中,ASP.NET ... 
- 【深入浅出jQuery】源码浅析2--奇技淫巧
		最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ... 
- maven repo plugin  archiver
		Failure to transfer org.apache.maven:maven-archiver:pom:2.4.1 from http://repo1.maven.org/xxx was ca ... 
- 浅析匿名函数、lambda表达式、闭包(closure)区别与作用
		浅析匿名函数.lambda表达式.闭包(closure)区别与作用 所有的主流编程语言都对函数式编程有支持,比如c++11.python和java中有lambda表达式.lua和JavaScript中 ... 
随机推荐
- java实例--海盗的最优方案
			package unit4; public class Pirate{ private String name; private int[] schemes; private int index; p ... 
- HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID
			HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在i ... 
- BeagleBone Black项目实训手册(大学霸内部资料)
			BeagleBone Black项目实训手册(大学霸内部资料) 介绍:本教程是<BeagleBone Black快速入门教程>的后续教程.本教程以项目操作为主,讲解LED项目.声音项目.传 ... 
- 李洪强-C语言6-控制结构
			C语言流程控制 一.流程控制结构 (1)顺序结构:按书写顺序执行每一条语句. (2)选择结构:对给定的条件进行判断,根据判断结果决定执行哪一段代码. (3)循环结构:在给定条件成立的情况下,反复执行某 ... 
- iOS开发中代理使用出现的问题解决
			在给自定义的LHQTabBar设置代理的时候,定义的代理的属性的时候此时会报一个警告 我们需要遵守UITabBarDelegate的协议才行, 不过此时还有警告,警告已经变成了 此时我们需要在.m文件 ... 
- windows渗透被人忽视的一些小命令
			cmdkey /list 可以列出域内网之间可用的凭据. wmic useraccount get name,sid gpresult /r 
- 一种少见的跨目录写webshell方法
			http://hi.baidu.com/kwthqquszlbhkyd/item/480716204cfa33c3a5275afa 
- mysql 动态sql语句
			; SET @ss = ' INSERT INTO prod_attr SELECT ? AS prod_id,A.* FROM ( SELECT 1 AS attr_id,\'中国出版社\' AS ... 
- NodeJs - 序列化
			https://nodejs.org/dist/latest-v5.x/docs/api/querystring.html 序列化: querystring.stringify({name:'Lee' ... 
- BZOJ 1051 受欢迎的牛(Tarjan缩点)
			1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4573 Solved: 2428 [Submit][S ... 
