上一篇文章说过Plist 的明文其实是一个xml格式的文件,但是这个文件你不能按照普通的xml文件的格式去解析,需要使用到itunes的专门导出函数来解析。
简单列一下需要使用到的函数,这些函数是从 CoreFoundation.dll 导出的。
1) 用来判断一段缓冲是什么类型的,比如字典类型,字符串,数字,数组等等。
CFGetTypeID
2) 用来将缓存的内容转换成字符串。
CFStringGetCString
3) 判断该数字类型具体类型,比如int,short ,double 等等
CFNumberGetType
4) 如果缓存是一个数字的类型,函数用来将缓存转换成数字
CFNumberGetValue
5) 如果缓存是一个布尔的类型,函数用来将缓存转换成布尔值
CFBooleanGetValue
6) 如果缓存是一个日期类型,函数用来返回一个距离2001年1月1日0时0分0秒的描述,是一个double值。
CFDateGetAbsoluteTime
7) 如果缓存是一个二进制的数据,下面两个函数返回缓存地址,以及长度。
CFDataGetLength CFDataGetBytePtr
8) 如果缓存是一个字典,函数用于解析字典,将一个回调函数地址传给这个函数,就可以收到key,value的回调
CFDictionaryApplyFunction
9) 如果缓存是一个数组类型,下面函数用于获取数组的长度,以及根据索引获取数据。
CFArrayGetCount CFArrayGetValueAtIndex
大致使用流程如下
1) 把一个plist 文件读取到一段缓存。
2) 调用CFGetTypeID 函数判断缓存的类型,函数返回一个整形值。
7: 字符串 。22: 数字 。21:布尔。37: 日期 。20: 二进制。18 :字典。19: 数组。
3) 根据不同的类型来调用相应的函数获取值
上面的3个步骤就可以解析plist文件,无论是明文的还是二进制的都可以解析出来。
iTunes 也有一部分函数用来将数组,字符串之类的转换成一个二进制的或者明文的plist 文件
1)将一个数字转换成缓存
CFNumberCreate
2) 字符串
CFDataCreate CFStringCreateFromExternalRepresentation
3) 日期类型
CFDateCreate
4) 缓存
CFDataCreate
5) 数组,先创建一个数组,然后往数组添加类容
CFArrayCreateMutable CFArrayAppendValue
6) 字典,先创建一个字典,然后添加key,value
CFDictionaryCreateMutable CFDictionaryAddValue
转让Android,IOS 手机助手各种技术资料,文档,以及源码,有需要的可以联系我QQ: 2506314894