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

IOS深入学习(12)之Archiving的更多相关文章

  1. iOS阶段学习第一天笔记(Mac终端的操作)

    前言部分 原本从事的是.NET开发,一直在要不要转iOS 中犹豫徘徊,经过复杂的内心挣扎终于鼓起勇气辞职脱产学习iOS;希望通过四个月的 学习后能够拿到理想的薪资.以下是学习过程中的学习笔记,为了方便 ...

  2. ios网络学习------4 UIWebView的加载本地数据的三种方式

    ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...

  3. 开源中国iOS客户端学习

    开源中国iOS客户端学习 续写前言 <开源中国iOS客户端学习>续写前系列博客    http://blog.csdn.net/column/details/xfzl-kykhd.html ...

  4. 原 iOS深入学习(Block全面分析)http://my.oschina.net/leejan97/blog/268536

    原 iOS深入学习(Block全面分析) 发表于1年前(2014-05-24 16:45)   阅读(26949) | 评论(14) 39人收藏此文章, 我要收藏 赞21 12月12日北京OSC源创会 ...

  5. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  6. JavaScript学习12 JS中定义对象的几种方式

    JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...

  7. ios网络学习------6 json格式数据的请求处理

    ios网络学习------6 json格式数据的请求处理 分类: IOS2014-06-30 20:33 471人阅读 评论(3) 收藏 举报 #import "MainViewContro ...

  8. iOS之学习资源收集--很好的IOS技术学习网站

    点击图片也能打开相关的网站: https://boxueio.com/skill/swift http://ios.b2mp.cn/ http://gold.xitu.io/welcome/?utm_ ...

  9. ios开发之OC基础-ios开发学习路线图

    本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...

  10. iOS手势学习UIGestureRecognizer & cocos2d 手势推荐

    iOS手势学习UIGestureRecognizer & cocos2d 手势推荐 手势识别类型: UILongPressGestureRecognizer  // 长按UIPanGestur ...

随机推荐

  1. git与svn对比

    git 与 svn 对比 git的使用不需要联机 SVN集中式版本控制:每个人的版本都是提交到服务器,服务器坏了就雪崩.git分布式版本控制:  安全,每人本地有个版本库,每个人都可以充当‘服务器 它 ...

  2. JS浏览器对象-Screen对象

    代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title ...

  3. java 不同意同一账户不同IP 同一时候登录系统解决的方法 兼容IE Firefox

    需求就是 不同意同一个账户同一时间登录系统.仅仅要有一个账户在线其它人就是不能用这个账户. 功能非常easy,过程非常纠结 . 这篇文章攻克了兼容IE.Firefox 浏览器下,不同IP 地址 同一用 ...

  4. expect spawn、linux expect 用法小记

    使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: ######## ...

  5. CCArray(转)

    http://blog.csdn.net/passtome/article/details/7966451 CCArray也是cocos2d-x自己写的类.它相当于是objc的NSArray.在coc ...

  6. [小技巧][ASP.Net MVC Hack] 使用 HTTP 报文中的 Header 字段进行身份验证

    在一些 Web 系统中,身份验证是依靠硬件证书进行的:在电脑上插入 USB 证书,浏览器插件读取证书的相关信息,然后在发送 HTTP 登录请求时顺便在 Header 字段附加上身份信息.服务器端处理这 ...

  7. Java基础知识强化37:StringBuffer类之StringBuffer的构造方法

    1. StringBuffer的构造方法: (1)StringBuffer(): (2)StringBuffer(CharSequence seq): (3)StringBuffer(int capa ...

  8. C# typeof Gettype is as &拆箱 装箱

    有时候,我们不想用值类型的值,就是想用一个引用..Net提供了一个名为装箱(boxing)的机制,它允许根据值类型来创建一个对象,然后使用对这个新对象的一个引用. 首先,回顾两个重要的事实,1.对于引 ...

  9. OD: Register, Stack Frame, Function Reference

    几个重要的 Win32 寄存器 EIP 指令寄存器(Extended Instruction Pointer) 存放一个指针,指向下一条等待执行的指令地址 ESP 栈指针寄存器(Extended St ...

  10. 多维背包 hrbudt 1335 算法与追MM

    hrbust #include<string.h> //多进制储存数,第i位进制维back[i]+1,可以避免重复 #include<stdio.h> using namesp ...