1. 程式人生 > >IOS深入學習(28)之Property list(屬性列表檔案)

IOS深入學習(28)之Property list(屬性列表檔案)

1 前言

  本文主要介紹了plist(Property list)的相關介紹。

2 詳述

  屬性列表是能夠儲存於檔案系統和之後被重新恢復的層級物件的代表。屬性列表提供給應用一個輕量級的,便攜的來儲存小量資料的方式。他們是來自於特殊型別物件(實際上是一個物件圖)的層級物件。屬性列表很容易就被程式化建立並且甚至更早的時候序列化到一個持久化的表示中。應用稍後讀取靜態的表示到記憶體之後並且重建原始的層級物件。Cocoa Foundation和Core Foundation擁有有關屬性列表的序列化和反序列化的API。

2.1 屬性列表型別和物件

  屬性列表僅僅由某些確定型別的資料組成:字典,陣列,字串,數字(integer和float),日期,二進位制資料,和布林值。字典和陣列是特別的型別因為他們是集合;他們能夠包含一個或者多個數據型別,包含其他的字典和陣列。這種層級巢狀物件建立了一個物件圖。抽象資料型別擁有響應的Foundation類,Core Foundation型別,和對於集合物件的XML元素和值物件,詳見下面列表:

  共同地,這些類例項就是property list objects(屬性列表物件)。例如:一個NSMutableDictionary物件是一個屬性列表物件,像NSNumber物件,一個NSString物件等等。對於一個合法的屬性列表,所有物件圖中的物件必須是屬性列表物件。

2.2 屬性列表最好的實踐

  我們能夠將屬性列表以XML和二進位制格式寫出來。二進位制格式比XML版本的更緊湊而且更有效率。大多數情況下它被推薦使用。然而,如果我們需要的話,我們能夠手動編輯XML屬性列表。屬性檔案列表使用plist副檔名。

  我們應該不適用屬性列表儲存大型的,複雜的物件圖,特別是當物件有可變的設定時候。我們不能夠使用屬性列表來儲存不支援歸檔的物件,例如模型物件。對於這些情況,使用歸檔代替。儘管屬性列表能夠包含NSData物件,但是它最好不要使用data物件在屬性列表中來儲存大量的二進位制資料。

2.3 屬性列表序列化

  序列化和反序列化屬性列表,呼叫NSPropertyListSerialization類的適當的類方法,如果使用Core Foundation,使用CFPropertyListRef工具型別。在Cocoa中,序列化輸出是以NSData物件的格式。因此我們能夠使用類方法(例如:writeToFile:automically:)來將資料寫入到檔案系統中並且使用適當的NSData類工廠記憶體來讀回到記憶體中。然後,當我們反序列化它的時候,我們能夠制定屬性列表的可變選項。

3 結語

  以上是所有內容,希望對大家有所幫助。