IOS深入学习(12)之Archiving
1 前言
本文介绍的是一个归档解档方法,也是编码和解码时候所做的事情,和如何进行,编码和归档其实就是将对象关系转化为字节流并且归档为特殊的文件,解码和解档是逆过程。
英文原文:http://blog.csdn.net/developer_zhang/article/details/12082301
2 详述
归档(Archiving)是一种将一组关联的对象转化为一个能够在应用程序之间存储或者传输表单的方法。归档的最后结果--归档文件(an archive)--是一个二进制的记录了对象的标示,他们封装的值,和与其他对象关系的字节流。解档--反向的操作,获得归档文件并且冲洗构建对象标示网络。
归档的主要的内容是提供一般的方法来讲对象持久化。代替将对象数据写入到一个特殊的格式的文件,应用频繁的存储他们的模型对象到他们可以作为文件写入的归档文件。应用程序也能转化为对象网--被我们普遍所知知道对象关系图(an object graph)--给另一个应用程序使用归档。应用程序常常利用归档做粘贴板操作例如赋值,粘贴。
对于被包含在一个归档文件的实例,一个类必须使用NSCoding协议并且实现必须的编码和解码对象的方法。Cocoa归档能够保存Objective-C对象,标量值,C数组,结构体,和字符串。归档与封装的数据一起存储对象类型,因此一个对象从一个相同的作为最初的编码到六中对象的类的字节流进行解码。
2.1 键值和连续的归档
Foundation 框架提供了两种类的集合用来归档和解档对象网。他们包含了初始化对象的方法和归档解档操作并且对于编码和解码我们对象的类型。这些类的对象有时候涉及归档和解档。
·键值归档和解档(NSKeyedArchiver和NSKeyedUnarchiver)。这些对象使用字符串键值作为数据的标示符用来编码和解码。他们是归档和解档对象的首选对象,特别是对于新的应用。
·连续的归档和解档(NSArchiver和NSUnarchiver)。这种“旧样式”归档编码对象状态以一种确定的要求;解档期望解码对象状态以一种相同的要求。他们是遗留代码;新的应用应该使用键值归档来代替。
2.2 创建和解码键值归档
应用创建归档通过调用NSKeyedArchiver的archiveRootObject:toFile:类方法。方法的第一个参数与对象图的跟对象有关联。开始于跟对象,图中的每个对象实现NSCoding协议被给与编码自己成为归档文件的机会。结果的字节流被写入特别的文件。
解码一个归档进程在香坊的方向。应用调用NSKeyedUnarchiver类方法unarchiveObjectWithFile:。通过所给的归档文件,方法重建对象图,要求在图中每个对象的类在自己六中解码有关的数据并且重建对象。方法以返回跟对象的一个关联而结束。
NSKeyedArchiver类方法archiverDataWithRootObject:和unarchiverDataWithRootObject:与上面的方法是等价的,除了他们处理数据对象而不是文件的时候。
3 结语
以上是所有内容,希望对大家有所帮助。转载请注明文章出处:http://blog.csdn.net/developer_zhang
最新文章
- 【Spring】SpringMVC中浅析Date类型数据的传递
- Windows Phone 8 开发系列(持续更新中)
- 开源文档管理工具Joomla的网站安装
- androidannotations 简单配置
- .NET Core 在Visual Studio 2015 下的使用-MSDN
- ListFragment
- 项目 erlang启动时死循环
- mvc中的webapi
- Web前端设计:Html强制不换行<;nobr>;标签用法代码示例
- Codeforces Round #324 (Div. 2) B. Kolya and Tanya 快速幂
- php学习笔记——基础知识(1)
- Centos6.5 mysql折腾记
- Nginx反向代理实现Tomcat负载均衡
- Python3 文件
- angularJS+KindEditor无法获取或清空textarea的值
- 【java】String类常见操作
- java中的随机数Random
- Java如何写Common直接调用
- 【Flex】自定义组件学习
- TSC条码打印机C#例程(tsclib.dll调用)
热门文章
- Python进阶(面向对象编程基础)(四)
- Intellj Idea 2016.1.3的使用
- (转)How to renew your Apple Push Notification Push SSL Certificate
- (转)iOS keychain API及其封装
- Javascript:sort()方法快速实现对数组排序
- INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES错误解决方法
- [iOS]使用symbolicatecrash分析crash文件
- linux系统自动执行任务(转)
- Ajax&;XMLHttpRequest
- 多线程下载 HttpURLConnection