您的位置:首页 > 移动开发 > IOS开发

IOS深入学习(28)之Property list(属性列表文件)

2013-10-22 15:02 267 查看

1 前言

  本文主要介绍了plist(Property list)的相关介绍。

  转载请注明转自:http://blog.csdn.net/developer_zhang

2 详述

  属性列表是能够存储于文件系统和之后被重新恢复的层级对象的代表。属性列表提供给应用一个轻量级的,便携的来存储小量数据的方式。他们是来自于特殊类型对象(实际上是一个对象图)的层级对象。属性列表很容易就被程序化创建并且甚至更早的时候序列化到一个持久化的表示中。应用稍后读取静态的表示到内存之后并且重建原始的层级对象。Cocoa Foundation和Core Foundation拥有有关属性列表的序列化和反序列化的API。

2.1 属性列表类型和对象

  属性列表仅仅由某些确定类型的数据组成:字典,数组,字符串,数字(integer和float),日期,二进制数据,和布尔值。字典和数组是特别的类型因为他们是集合;他们能够包含一个或者多个数据类型,包含其他的字典和数组。这种层级嵌套对象创建了一个对象图。抽象数据类型拥有响应的Foundation类,Core Foundation类型,和对于集合对象的XML元素和值对象,详见下面列表:



  共同地,这些类实例就是property list objects(属性列表对象)。例如:一个NSMutableDictionary对象是一个属性列表对象,像NSNumber对象,一个NSString对象等等。对于一个合法的属性列表,所有对象图中的对象必须是属性列表对象。

2.2 属性列表最好的实践

  我们能够将属性列表以XML和二进制格式写出来。二进制格式比XML版本的更紧凑而且更有效率。大多数情况下它被推荐使用。然而,如果我们需要的话,我们能够手动编辑XML属性列表。属性文件列表使用plist扩展名。

  我们应该不适用属性列表存储大型的,复杂的对象图,特别是当对象有可变的设置时候。我们不能够使用属性列表来存储不支持归档的对象,例如模型对象。对于这些情况,使用归档代替。尽管属性列表能够包含NSData对象,但是它最好不要使用data对象在属性列表中来存储大量的二进制数据。

2.3 属性列表序列化

  序列化和反序列化属性列表,调用NSPropertyListSerialization类的适当的类方法,如果使用Core Foundation,使用CFPropertyListRef工具类型。在Cocoa中,序列化输出是以NSData对象的格式。因此我们能够使用类方法(例如:writeToFile:automically:)来将数据写入到文件系统中并且使用适当的NSData类工厂内存来读回到内存中。然后,当我们反序列化它的时候,我们能够制定属性列表的可变选项。

3 结语

  以上是所有内容,希望对大家有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息