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. JScript_Test

    Hello SyntaxHighlighter function helloSyntaxHighlighter() { return "hi!"; } function hello ...

  2. 从epoll构建muduo-11 单线程Reactor网络模型成型

    mini-muduo版本传送门 version 0.00 从epoll构建muduo-1 mini-muduo介绍 version 0.01 从epoll构建muduo-2 最简单的epoll ver ...

  3. Python 获取Facebook用户的Friends的爱好中的Top10

    CODE; #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-12 @author: guaguastd @name: f ...

  4. 开发专题指南: JEECG高速微云开发平台前言

    JEECG微云高速开发平台-前言 1. 前言 1.1. 技术背景 随着WEB UI 框架(EasyUI/Jquery UI/Ext/DWZ)等的逐渐成熟,系统界面逐渐实现统一化,代码生成器也能够生成统 ...

  5. Java基础知识强化63:Arrays工具类之方法源码解析

    1. Arrays工具类的sort方法: public static void sort(int[] a): 底层是快速排序,知道就可以了,用空看. 2. Arrays工具类的toString方法底层 ...

  6. Android模块化编程之引用本地的aar

    随着项目越来越多,代码的复用就变得异常重要,这时候就要进行模块化编程,就是把一些通用的组件或者类库做成单独的模块,其他项目直接进行引用就好.针对Android开发最常见的就是Android Libra ...

  7. 利用ajax从txt读取数据

    html代码: <div id="news"></div> txt: [ {"id":"1", "news ...

  8. 自定义key解决zabbix端口监听取值不准确的问题

         今天有一个朋友问到我一个关于zabbix监控tcp端口的问题,明明端口在监听,但是通过net.tcp,listen取值取到的却是0. 经过简单的goole发现这已经是一个历史悠久的问题: 问 ...

  9. C# winCE5.0开发右键效果解决方案

    用VS2008开发C#语言wince程序,发现程序里右键捕获不到,采集器上点也没反应,上网查好像有个c++版本的,看不懂啊,下面我给出C#实现右键效果的解决方案,请各位多多优化. 首先控件Contex ...

  10. a标签调用js的几种方法

    我们常用的在a标签中有点击事件: <a> 标签的 href 属性用于指定超链接目标的 URL,href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScrip ...