代码之家  ›  专栏  ›  技术社区  ›  Abhinav

处理二进制plist

  •  2
  • Abhinav  · 技术社区  · 14 年前

    有人能告诉我普通plist和二进制plist的区别,以及它们在处理方面的不同吗?处理二进制plist需要额外做什么?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Jeff Kelley    14 年前

    二进制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>
    

    相反,它们使用苹果的私有方法重新存储,从而降低文件大小。这个例子(HedgeWars的首选项)是378字节,但二进制格式是162字节。

    好消息是内置工具,例如 NSUserDefaults 将能够交替使用这些格式。使用其他方法,例如 NSArray 艾斯 -arrayWithContentsOfFile: 方法也应该有效。

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

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

    这将把给定路径的plist转换为xml。有效的格式是(目前) xml1 binary1 .

    一定要查看 Property List Programming Guide 也是。