美文网首页
PlistBuddy

PlistBuddy

作者: CoderGuogt | 来源:发表于2019-12-16 11:14 被阅读0次

    PlistBuddy

    介绍

    Mac 中,plist 是一种常见的文件格式,在 iOS 开发过程中,也经常用到 plist 文件,类似 xml,通过使用键值对的方式来进行配置,PlistBuddyMac 自带的专门解析 plist 的工具。

    使用

    由于 PlistBuddy 并未在 Mac 中默认配置,所以需要通过绝对路径来引用,PlistBuddy的路径所在:

    /usr/libexec/PlistBuddy

    查看帮助

    /usr/libexec/PlistBuddy --help

    Command Format:
        Help - Prints this information
        Exit - Exits the program, changes are not saved to the file
        Save - Saves the current changes to the file
        Revert - Reloads the last saved version of the file
        Clear [<Type>] - Clears out all existing entries, and creates root of Type
        Print [<Entry>] - Prints value of Entry.  Otherwise, prints file
        Set <Entry> <Value> - Sets the value at Entry to Value
        Add <Entry> <Type> [<Value>] - Adds Entry to the plist, with value Value
        Copy <EntrySrc> <EntryDst> - Copies the EntrySrc property to EntryDst
        Delete <Entry> - Deletes Entry from the plist
        Merge <file.plist> [<Entry>] - Adds the contents of file.plist to Entry
        Import <Entry> <file> - Creates or sets Entry the contents of file
    
    Entry Format:
        Entries consist of property key names delimited by colons.  Array items
        are specified by a zero-based integer index.  Examples:
            :CFBundleShortVersionString
            :CFBundleDocumentTypes:2:CFBundleTypeExtensions
    
    Types:
        string
        array
        dict
        bool
        real
        integer
        date
        data
    
    Examples:
        Set :CFBundleIdentifier com.apple.plistbuddy
            Sets the CFBundleIdentifier property to com.apple.plistbuddy
        Add :CFBundleGetInfoString string "App version 1.0.1"
            Adds the CFBundleGetInfoString property to the plist
        Add :CFBundleDocumentTypes: dict
            Adds a new item of type dict to the CFBundleDocumentTypes array
        Add :CFBundleDocumentTypes:0 dict
            Adds the new item to the beginning of the array
        Delete :CFBundleDocumentTypes:0 dict
            Deletes the FIRST item in the array
        Delete :CFBundleDocumentTypes
            Deletes the ENTIRE CFBundleDocumentTypes array
    
    

    从输出的信息,就大概能知道 PlistBuddy 有哪些指令,值的类型有哪些,怎么去使用。

    下面就举几个例子,利用 PlistBuddyPlist 文件进行操作。

    创建一个 test.plist 文件

    Xcode → File → New → File → Property List → Next → Create

    此时创建了一个空的 plist 文件,终端打开当前目录

    添加内容

    添加普通内容

    /usr/libexec/PlistBuddy -c "Add :Name string Tome" test.plist
    
    image

    添加一个数组

    // 添加一个 Names 数组
    /usr/libexec/PlistBuddy -c "Add :Names array" test.plist
    // 添加两个元素到 Names 数组中
    /usr/libexec/PlistBuddy -c "Add :Names: string Jack" test.plist
    /usr/libexec/PlistBuddy -c "Add :Names: string Tome" test.plist
    
    image

    如果再次添加一个 Names 数组到 plist 文件中,会报错添加失败,提示该数组已存在

    20191216103840.png

    修改内容

    /usr/libexec/PlistBuddy -c "Set Name Jack" test.plist
    

    将刚才 Name 的内容 Tome 修改成 Jack

    image

    根据 Key 获取内容

    /usr/libexec/PlistBuddy -c "Print Name" test.plist
    
    image

    根据 Key 删除内容

    首选先添加一个 test key,然后设置内容 测试删除

    /usr/libexec/PlistBuddy -c "Add :test string 测试删除" test.plist
    
    image

    紧接着删除这个test

    /usr/libexec/PlistBuddy -c "Delete test" test.plist
    
    image

    添加字典

    plist 文件中添加 test 字典,并且添加两个元素 ageheight 进去

    // 添加一个字典到 `plist` 文件中
    /usr/libexec/PlistBuddy -c "Add :test dict" test.plist
    // 添加一个 `height` , 内容 `20` 的 `int`
    /usr/libexec/PlistBuddy -c "Add :test:height integer 20" test.plist
    // 添加一个 `age`, 内容 `30` 的 `int`
    /usr/libexec/PlistBuddy -c "Add :test:age integer 30" test.plist
    

    以上就是利用 PlistBuddyplist 文件的一些操作.利用这个我们可以对 Xcode 工程 project.pbxproj 进行修改。

    相关文章

      网友评论

          本文标题:PlistBuddy

          本文链接:https://www.haomeiwen.com/subject/ocirnctx.html