处理二进制Plist

时间:2010-11-18 18:41:38

标签: iphone

有人可以让我知道普通plist和二元plist之间的区别以及它们如何处理不同?我需要做些什么来处理二进制plist吗?

1 个答案:

答案 0 :(得分:3)

二进制plist不存储在人类可读的XML中,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>SUFeedURL</key>
        <string>http://www.hedgewars.org/download/appcast.xml</string>
        <key>SUHasLaunchedBefore</key>
        <true/>
        <key>SULastCheckTime</key>
        <date>2010-11-15T22:00:36Z</date>
</dict>
</plist>

相反,它们使用Apple的私有方法进行存储,从而降低了文件大小。那个例子(来自Hedgewars的偏好)是378个字节,但是二进制格式是162个字节。

好消息是内置工具(例如NSUserDefaults)将能够互换使用这些格式。使用其他方法,例如NSArray-arrayWithContentsOfFile:方法,也应该可以正常工作。

要在两者之间进行转换,您可以使用plutil应用,如果安装在Mac上/usr/bin。这是一个例子:

plutil -convert xml1 /path/to/your/plist.plist

这会将给定路径上的plist转换为XML。有效格式(目前为xml1binary1

请务必查看Property List Programming Guide