首页 > 软件开发 > c语言 > 正文
12.3.3 用归档器对数据进行读写
2015-11-23 14:00:12     我来说两句      
收藏    我要投稿

归档器的作用是将任意的对象集合转换为字节流。这听起来像是NSPropertyListSerialization类采用的过程,但它们之间有一个重要的区别。属性列表序列化只能转换一个有限集合的数据类型(大多数是数量类型),而归档器可以转换任意的Objective-C对象、数量类型、数组、结构、字符串、及更多其它类型。

归档过程的关键在于目标对象的本身。归档器操作的对象必须遵循NSCoding协议,该协议定义了读写对象状态的接口。归档器在编码一组对象时,会向每个对象发送一个encodeWithCoder:消息,目标对象则在这个方法中将自身的关键状态信息写入到对应的档案中。

解档过程的信息流与此相反,在解档过程中,每个对象都会接收到一个initWithCoder:消息,用于从档案中读取当前状态信息,并基于这些信息进行初始化。解档过程完成后,字节流就被重新组成一组与之前写入档案时具有相同状态的新对象。

Foundation框架支持两种归档器—顺序归档和基于键的归档。基于键的归档器更加灵活,是应用程序开发中推荐使用的归档器。下面的例子显示如何用一个基于键的归档器对一个对象图进行归档。_myDataSource对象的representation方法返回一个单独的对象(可能是一个数组或字典),指向将要包含到档案中的所有对象,之后该数据对象就被写入由myFilePath变量指定路径的文件中。

NSData *data = [NSKeyedArchiver
archivedDataWithRootObject:[_myDataSource representation]];
[data writeToFile:myFilePath atomically:YES];

注意:还可以向NSKeyedArchiver对象发送archiveRootObject:toFile:消息,以便在一个步骤中完成档案的创建和将档案写入存储。

可以简单地通过相反的流程来装载磁盘上的档案内容。在装载磁盘数据之后,可以通过NSKeyedUnarchiver类及其unarchiveObjectWithData:类方法来取回模型对象图。例如,可以用下面的世界杯外围投注网站来解档之前例子中的数据:

NSData* data = [NSData dataWithContentsOfFile:myFilePath];
id rootObject = [NSKeyedUnarchiver unarchiveObjectWithData:data];

 

点击复制链接 与好友分享!回本站首页
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:12.3.2 属性列表数据的读写
下一篇:12.3.4 将数据写到Documents目录
相关文章
图文推荐
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑--致力于做实用的IT技术学习网站

世界杯外围投注官网