目錄:
0. 準備工作
1. 簡介
2. 偏好檔案(plist檔案)
3. 編輯plist檔案舉例
4. 應用執行個體
5. 深入理解偏好檔案
6. 常用工具
7. 問題解決
準備工作:
- 知識的準備:
熟悉Mac OS X系統中目錄層次的表達方式,也就是說你可以在Finder視窗中, 輕鬆找到/Library/Preferences目錄.
- 軟體的準備:
安裝Property List Editor程式。如果還沒有,你可以從以下幾個方式找到。
- 隨機的光碟片中,第一張光碟片裡面的/Optional Installs/Xcode Tools/就有, 運行XcodeTools.mpkg就可以了, 但是不能保證是最新的程式.
- 到download.csdn.net的PropertyListEditor
下載, 地址<http://download.csdn.net/source/1382942>. 這個程式是隨10.5.6系統硬碟的XcodeTools的.
- Apple的官方網站下載,參見http://developer.apple.com/mac/, 這裡下載的肯定是最新的程式.
簡介:
在Mac的OS X系統裡,你點擊左上方蘋果菜單,裡面就有一個叫做System Preferences的選項.
在其它的程式中,比如Safari, iPhoto等,點擊該程式名稱菜單,也會看到一個類似的菜單選項:
Preferences...。那麼什麼是Preferences(偏好)呢?
其實,普遍意義上來說就是一種配置(設定檔,Configuration
File)。對於不同的程式和不同的作業系統,它們所支援的配置是以不同方式儲存在系統上的,比如說,PC機的BIOS也是一種電腦硬體的配置,它儲存
在電腦的CMOS裡; 對於大家熟悉的Windows系統, 系統本身使用Registry的方式儲存系統/使用者/應用程式的配置資訊,
比如說登陸運行程式/案頭背景等等,都是儲存在那裡,Windows系統的Registry是儲存在多個二進位加密的文字檔中的,用於儲存不同的系統/
使用者配置資訊;而在Mac OS X系統中,採用的是一種文本或二進位XML格式的檔案格式,
一般來說檔案的尾碼名是.plist,所以也叫plist檔案,
比如瀏覽器Safari的預設首頁就是儲存在com.apple.safari.plist檔案中的HomePage項中.
當然plist檔案在Mac OS X中已經不僅僅作為一種設定檔了.
普通的應用程式也有自己的設定檔,用於儲存程式預設的參數和資料以及使用者自訂/變更的參數,應用程式可以使用作業系統提供的機制,比如Windows
的Registry和Mac OS
X的plist,當然應用程式開發商可以根據自己的需要或愛好使用別的任何檔案格式儲存,比如古老的.ini文字檔等。
在Mac OS
X系統中對plist檔案的支援,最開始是使用Text文字格式設定的,這樣使用者可以使用任意的文本編輯軟體就可以開啟編輯。後來為了效率考慮,從10.2開
始引入了二進位Binary的格式,這樣可以提高系統讀取速度,而plutil命令列工具就是從這時開始引入的--後面有相關介紹. 而從10.4
Tiger系統之後,系統預設的plist檔案都是二進位格式的了.
偏好檔案(plist檔案):
我們知道了大多數的偏好配置都儲存在plist檔案中,那麼我們就看看plist檔案的樣子.
下面的內容就是一個最簡單的最基本的plist文字檔的內容:
<?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/> </plist> |
它在Property List Editor中是的樣子:
編輯plist檔案舉例:
可以通過上面提到的Property List Editor程式編輯一個plist檔案。首先我們記住:plist檔案內容是由一系列的屬性名稱和對應的值通過一定的順序組合組成的。
下面只是舉一個簡單的例子,通過例子大家可以熟悉plist檔案的樹狀結構和支援的資料類型等特性。
運行Property List Editor程式後,看到的是的內容,在按鈕下面是三列的空表,三列分別是:Peroperty List,
Class, Value. 其中Peroperty List就是屬性名稱列表;
Class是定義該屬性的類型,plist檔案支援好多種類型,這一點後面說;Value就是該屬性的值。
首先, 我們需要建立一個根,點擊New Root按鈕, 系統產生一個屬性名稱叫Root, 類型是Dictionary(字典), Value是一個不可編輯的預設是"0 key/value pairs"的一行.
我們用滑鼠點擊這個Root. 上面的New Root按鈕變成了New Sibling,
但是是灰色禁止的,也就是說plist檔案只能由一個Root,它沒有兄弟。為了能在Root下面添加它的子屬性,
在Root左邊有一個向右的小三角, 用滑鼠點擊它,它變成了向下的三角, 也就是告訴程式,這時上面的New Sibling按鈕就變成的New
Child了,我要編輯/查看它的子屬性。所以對於可以添加子屬性的屬性,一定要首先開啟它才能對它編輯,這是以後要用到的。
先面先來建立一個簡單的屬性,點擊New Child,在走邊列給它一個名稱,叫Background, 中間列選String, 也就是一個字串類型,最右面寫入該屬性的值,比如~/Pictures/Background.jpg.
現在Background是選中的,上面的按鈕是“New Sibling”, 點擊它, 並給它Childs的屬性名稱,
點擊類型列,會出現的所支援的所有類型的列表,選擇Array的類型,也就是數群組類型,大家知道數組是一個相同屬性的值組成的一列,每個值按照0,
1, 2...的順序排列,所以,點擊它左面的三角開啟它後,每添加一個它的子屬性,系統會自動為每個子屬性設定一個數位屬性名稱,
我們分別建立兩個子屬性,每個都是字串string類型, 值分別是Son, Daughter.
選定Root, 再建立一個子屬性,叫做Country, 屬性是Dictionary, 它的子屬性有三個, 分別是CA, CN, UN, 數實值型別都是數字Number, 值分別是0, 1, 2。
再在Root下面建立一個子屬性,叫做MyData, 屬性是Data, 內容可以自己填寫. 再建立一個Root的子屬性,叫做Today, 屬性是Date, 程式自動填上當天的日期.
最後建立一個Root的子屬性,叫做AmITony, 屬性是布爾Boolean,也就是是否, 預設是Yes。
完成上面的工作後,我們得到的是如的一個plist檔案.
有興趣的可以儲存這個plist檔案,並用文字編輯器開啟,看看裡面的結構.