iOS框架--屬性列表(PropertyList)

plist是什么?

屬性列表是一種結(jié)構(gòu)化數(shù)據(jù)表示,簡(jiǎn)稱做“plist”,它在Cocoa和CoreFoundation中使用,并作為一種便利方式來(lái)存儲(chǔ)、組織和訪問(wèn)標(biāo)準(zhǔn)數(shù)據(jù)類型。

屬性列表被廣泛應(yīng)用在OS X 和 iOS的程序中,比如,OS X Finder使用屬性列表存儲(chǔ)文件和文件夾的屬性。在iOS中經(jīng)常用屬性列表作為配置文件存儲(chǔ)用戶的偏好選項(xiàng)。

plist與NSUserDefault的關(guān)系

NSUserDefaults就是使用屬性列表來(lái)存儲(chǔ)表示用戶偏好的對(duì)象的,因此一些屬性列表不支持的類型,比如NSColor和NSFont,是不能直接存儲(chǔ)到NSUserDefaults的。

plist的訪問(wèn)和存儲(chǔ)方法

你可以用兩種方式將屬性列表序列化到文件系統(tǒng),或者從文件系統(tǒng)反序列化:

  • 如果屬性列表的根對(duì)象是一個(gè)NSDictionary或NSArray對(duì)象(大部分情況),你可以調(diào)用他們的writeToFile:atomically:
    writeToURL:atomically:方法。這兩個(gè)方法會(huì)將屬性列表的所有對(duì)象以XML格式寫(xiě)人到文件中去。
    同理,調(diào)用initWithContentsOfFile:initWithContentsOfURL:或相應(yīng)工廠方法dictionaryWithContentsOfURL:,都會(huì)讀取屬性列表的數(shù)據(jù)并構(gòu)造相應(yīng)的集合對(duì)象

  • 你可以將屬性列表對(duì)象序列化成NSData對(duì)象,然后寫(xiě)入文件。先調(diào)用[NSPropertyListSerialization dataFromPropertyList:format:errorDescription:]序列化成NSData對(duì)象,然后調(diào)用[NSData writeToFile:atomically:][NSData writeToURL:atomically:]寫(xiě)入文件。
    同理,先調(diào)用[NSData [NSData initWithContentsOfFile:][NSData initWithContentsOfURL:]讀取plist文件,再調(diào)用[NSPropertyListSerialization propertyListFromData:mutabilityOption:format:errorDescription:]將NSData對(duì)象反序列化成屬性列表根對(duì)象

兩種方式的比較:第一種方便;第二種靈活,比如可以將format改成binary格式

注意:NSDictionary或NSArray序列化屬性列表時(shí),必須保證里面包含的所有對(duì)象都是屬性列表支持的類型

plist支持的類型

其他自定義的類型想要使用屬性列表存儲(chǔ)的話,需要先歸檔到NSData再存儲(chǔ),因此要先支持歸檔(實(shí)現(xiàn)Coding協(xié)議)才行~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容