PlistBuddy
介紹
在 Mac
中,plist
是一種常見的文件格式,在 iOS
開發(fā)過程中,也經(jīng)常用到 plist
文件,類似 xml
,通過使用鍵值對(duì)的方式來進(jìn)行配置,PlistBuddy
是 Mac
自帶的專門解析 plist
的工具。
使用
由于 PlistBuddy
并未在 Mac
中默認(rèn)配置,所以需要通過絕對(duì)路徑來引用,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
有哪些指令,值的類型有哪些,怎么去使用。
下面就舉幾個(gè)例子,利用 PlistBuddy
對(duì) Plist
文件進(jìn)行操作。
創(chuàng)建一個(gè) test.plist
文件
Xcode → File → New → File → Property List → Next → Create
此時(shí)創(chuàng)建了一個(gè)空的 plist
文件,終端打開當(dāng)前目錄
添加內(nèi)容
添加普通內(nèi)容
/usr/libexec/PlistBuddy -c "Add :Name string Tome" test.plist
添加一個(gè)數(shù)組
// 添加一個(gè) Names 數(shù)組
/usr/libexec/PlistBuddy -c "Add :Names array" test.plist
// 添加兩個(gè)元素到 Names 數(shù)組中
/usr/libexec/PlistBuddy -c "Add :Names: string Jack" test.plist
/usr/libexec/PlistBuddy -c "Add :Names: string Tome" test.plist
如果再次添加一個(gè) Names
數(shù)組到 plist
文件中,會(huì)報(bào)錯(cuò)添加失敗,提示該數(shù)組已存在
修改內(nèi)容
/usr/libexec/PlistBuddy -c "Set Name Jack" test.plist
將剛才 Name
的內(nèi)容 Tome
修改成 Jack
根據(jù) Key 獲取內(nèi)容
/usr/libexec/PlistBuddy -c "Print Name" test.plist
根據(jù) Key 刪除內(nèi)容
首選先添加一個(gè) test
key,然后設(shè)置內(nèi)容 測(cè)試刪除
。
/usr/libexec/PlistBuddy -c "Add :test string 測(cè)試刪除" test.plist
緊接著刪除這個(gè)test
/usr/libexec/PlistBuddy -c "Delete test" test.plist
添加字典
在 plist
文件中添加 test
字典,并且添加兩個(gè)元素 age
、height
進(jìn)去
// 添加一個(gè)字典到 `plist` 文件中
/usr/libexec/PlistBuddy -c "Add :test dict" test.plist
// 添加一個(gè) `height` , 內(nèi)容 `20` 的 `int`
/usr/libexec/PlistBuddy -c "Add :test:height integer 20" test.plist
// 添加一個(gè) `age`, 內(nèi)容 `30` 的 `int`
/usr/libexec/PlistBuddy -c "Add :test:age integer 30" test.plist
以上就是利用 PlistBuddy
對(duì) plist
文件的一些操作.利用這個(gè)我們可以對(duì) Xcode
工程 project.pbxproj
進(jìn)行修改。