对象归档:

概念:

对象归档是指将对象写入文件保存在硬盘,当再次又一次打开程序时,能够还原这些对象。也称:对象序列化、对象持久化。

数据持久性的方式(事实上就是3类)

1,NSKeyedArchiver——对象归档

2,NSUserDefaults  3,属性列表

4,SQLite数据库  5,Core Data数据库

归档方式:

对Foundation库中对象进行归档

自己定义对象进行归档(须要实现归档协议,NSCoding)

归档与属性列表的差别:

1,归档后的文件是加密的,属性列表是明文的。

2,属性列表不能存储自己定义对象类型,归档能够。

代码实现:

//对象归档,对象反归档
int main(int argc, char * argv[])
{
@autoreleasepool {
// return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
//归档(序列化)
NSArray *array = @[@"abc",@"123",@1234]; NSString *homePath = NSHomeDirectory();
NSLog(@"homePath :%@",homePath);
NSString *path = [homePath stringByAppendingPathComponent:@"test.archive"]; //文件和扩展名随便取 BOOL success = [NSKeyedArchiver archiveRootObject:array toFile:path];
if (success) {
NSLog(@"archive success");
}
}
return 0;
}

这是就生成了一个加密文件。

打开

6270 6c69 7374 3030 d401 0203 0405 081c
1d54 2474 6f70 5824 6f62 6a65 6374 7358
2476 6572 7369 6f6e 5924 6172 6368 6976
6572 d106 0754 726f 6f74 8001 a609 0a12
1314 1555 246e 756c 6cd2 0b0c 0d0e 5624
636c 6173 735a 4e53 2e6f 626a 6563 7473
8005 a30f 1011 8002 8003 8004 5361 6263
5331 3233 1104 d2d2 1617 181b 5824 636c
6173 7365 735a 2463 6c61 7373 6e61 6d65
a219 1a57 4e53 4172 7261 7958 4e53 4f62
6a65 6374 574e 5341 7272 6179 1200 0186
a05f 100f 4e53 4b65 7965 6441 7263 6869
7665 7208 1116 1f28 3235 3a3c 4349 4e55
6062 6668 6a6c 7074 777c 8590 939b a4ac
b100 0000 0000 0001 0100 0000 0000 0000
1e00 0000 0000 0000 0000 0000 0000 0000

int main(int argc, char * argv[])
{
@autoreleasepool {
// return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
//归档(序列化)
// NSArray *array = @[@"abc",@"123",@1234];
//
// NSString *homePath = NSHomeDirectory();
// NSLog(@"homePath :%@",homePath);
// NSString *path = [homePath stringByAppendingPathComponent:@"test.archive"]; //文件和扩展名随便取
//
// BOOL success = [NSKeyedArchiver archiveRootObject:array toFile:path];
// if (success) {
// NSLog(@"archive success");
// } //解归档(反序列化)
NSString *homePath = NSHomeDirectory();
NSString *path = [homePath stringByAppendingPathComponent:@"test.archive"];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"NSKeyedUnarchiver:%@",array);
}
return 0;
}

这种方法的缺陷:

一个对象归档成一个文件,当对象许多时很麻烦。

以下的方式能够解决问题:

归档:

1,使用NSData实例作为归档的存储数据

2,加入归档的内容(设置key和value)

3,完毕归档

4,将归档数据存入磁盘中

解归档:

1,从磁盘中读取文件,生成NSData实例

2,依据Data实例创建和初始化解归档实例

3,解归档,依据key訪问value的值。

iOS文档序列化(对象归档)的更多相关文章

  1. iOS数据存储之对象归档

    iOS数据存储之对象归档 对象归档 对象归档是iOS中数据持久化的一种方式. 归档是指另一种形式的序列化,但它是任何对象都可以实现的更常规的类型.使用对模型对象进行归档的技术可以轻松将复杂的对象写入文 ...

  2. Javascript学习8 - 脚本化文档(Document对象)

    原文:Javascript学习8 - 脚本化文档(Document对象) 每个Web浏览器窗口(或帧)显示一个HTML文档,表示这个窗口的Window对象有一个document属性,它引用了一个Doc ...

  3. iOS 数据持久性存储-对象归档

    对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化),使用的时候读取该文件的保存路径读取文件的内容(也称为解档,反序列化) 主要涉及两个类:NSKeyedArichiver.NSKey ...

  4. iOS文档预览功能教程

     本文转载至 http://blog.csdn.net/devday/article/details/6580444   文档iosuinavigationcontrollerextensionmic ...

  5. iOS文档注释

    Eclipse和IntelliJ IDEA系的IDE都有自动生成文档注释的功能,Xcode虽然安装了VVDocument,但是仍然感觉注释的功能不是很完善,于是今天整理了一下书写文档注释的一些用法. ...

  6. 【转载自友盟消息推送iOS文档】在appDelegate中注册推送

    1.2   基本功能集成指南 提示 请先在友盟的消息推送管理后台中创建App,获得AppKey和AppSecret 导入SDK 下载 UMessage_Sdk_All_x.x.x.zip并解压缩 导入 ...

  7. ***微信小程序学习文档和资料归档收集

    微信小程序官方文档: https://cloud.tencent.com/document/product/619 小程序培训视频教程: https://xw.qq.com/edu/201805140 ...

  8. iOS 文档分享相关

    在非系统预览情况下  指定文件打开系统分享菜单 NSString *savedPath = [NSHomeDirectory() stringByAppendingString:[NSString s ...

  9. VS2010/MFC编程入门之四十(文档、视图和框架:各对象之间的关系)

    前面一节中鸡啄米进行了文档.视图和框架的概述,本节主要讲解文档.视图.框架结构中各对象之间的关系. 各个对象之间的关系 文档.视图.框架结构中涉及到的对象主要有:应用程序对象.文档模板对象.文档对象. ...

随机推荐

  1. js 面向对象选项卡

      <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" conte ...

  2. 揭秘上海传智播客平均工资超过7k 其中一位知情人士

    大学毕业生人数破700万大关.如何破解"毕业即失业"中国式的大学困境? 2014年全国高校毕业生总数将达到727万人,比被称为"史上最难就业年"的2013年再添 ...

  3. 最具体的历史centos下一个 postfix + extmail + dovecot + maildrop 安装注意事项2014更新

    这篇文章原本是2008年发表的,近期几天照此笔记又安装了一遍系统.这里更新一下记录. 作者:wangdy 本文发表于  http://blog.csdn.net/aryang/article/deta ...

  4. 百度echarts扇形图每个区块增加点击事件

    效果图:操作人员要求 :我想看这个扇形图对应的 页面信息,给我加个链接跳转:原先的chart.js发现没有api,后来改用百度的echart.js <!DOCTYPE html> < ...

  5. C#使用ServiceController控制windows服务

    C#在,使用ServiceController控制类windows服务,添加首次使用前引文:System.ServiceProcess,空间中引用:using System.ServiceProces ...

  6. JSON序列化那点事儿

    JSON序列化那点事儿 序 当前主流的序列化JSON字符串主要有两种方式:JavaScriptSerializer及Json.net(Nuget标识:Newtonsoft.Json).JavaScri ...

  7. Initialising Memories

    The file_name and memory_nameare memory_start and memory_finish are optional, it missed out they def ...

  8. (大数据工程师学习路径)第一步 Linux 基础入门----Linux 下软件安装

    介绍 介绍 Ubuntu 下软件安装的几种方式,及 apt,dpkg 工具的使用. 一.Linux 上的软件安装 通常 Linux 上的软件安装主要有三种方式: 在线安装 从磁盘安装deb软件包 从二 ...

  9. (大数据工程师学习路径)第一步 Linux 基础入门----目录结构及文件基本操作

    Linux 目录结构及文件基本操作 介绍 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux 目录 ...

  10. Xcode-5.1.1更改文件盯作者

    原来的文件默认是用户开机时的username ,网上说什么改通讯录事实上都是不正确的. 1.首先打开偏好设置,选择用户群组 2.进入用户界面 改动全名.此时要求你输入用户的password才干改动us ...