plist文件的使用


什么是plist文件

  • 直接將數據寫在代碼里面,不是一種合理的做法。如果經常改,就要經常翻開對應的代碼進行修改,造成代碼擴展性低

  • 因此,可以考慮將經常變的數據放在文件中進行存儲,程序啟動后從文件中讀取最新的數據。如果要變動數據,直接修改數據文件即可,不用修改代碼

  • 一般可以使用屬性列表文件存儲NSArray或者NSDictionary之類的數據,這種 屬性列表文件 的擴展名是plist,因此也稱為plist文件

plist文件的使用

原來代碼:

先聲明好了一個數組:

@property (nonatomic,strong) NSArray *shops;

viewDidLoad中加載數組:

self.shops = @[
               @{
                   @"icon":@"單肩包",
                   @"name":@"單肩包"
                   },
               @{
                   @"icon":@"鏈式包",
                   @"name":@"鏈式包"
                   },
               @{
                   @"icon":@"手拿包",
                   @"name":@"手拿包"
                   },
               @{
                   @"icon":@"手提包",
                   @"name":@"手提包"
                   },
               @{
                   @"icon":@"雙肩包",
                   @"name":@"雙肩包"
                   },
               @{
                   @"icon":@"斜挎包",
                   @"name":@"斜挎包"
                   }
               ];

修改代碼:

1.新建一個plist文件

plist文件圖片

  • Root為文件的根節點,Root是什么類型,將來加載出來的就是什么類型。
  • 字典里放着name和icon兩個key值,即圖片和圖片名。

2.此處類型為Array,加載出來后就是NSArray對象,因此創建一個NSArray類型的對象

// 創建文件路徑
NSString *file = @"";
// 創建NSArray對象
[NSArray arrayWithContentsOfFile:file];
  • 凡是參數名為File的,傳遞的都是全路徑

3.創建一個NSBundle 對象來關聯一個資源包

    NSBundle *bundle = [NSBundle mainBundle];
  • 一個NSBundle對象對應一個資源包(圖片、音樂、視頻、plist等文件)
  • NSBundle的作用:用來訪問與之對應的資源包內部的文件,可以獲得文件的全路徑
  • 項目中添加的資源都會被添加到主資源包中,mainBundle關聯的就是項目的主資源包

4.利用mainBundle獲得plist文件在主資源包中的全路徑

 NSString *file = [bundle pathForResource:@"shops" ofType:@"plist"];

或者

 NSString *file = [bundle pathForResource:@"shops.plist" ofType:nil]
  • 第一個參數傳文件的文件名,第二個參數傳文件的擴展名
    5.最后,代碼改為:
 // 加載plist數據
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *file = [bundle pathForResource:@"shops" ofType:@"plist"];
    self.shops = [NSArray arrayWithContentsOfFile:file];

plist文件解析

pils文件解析圖片

  • 一旦加載plist,首先看根對象是什么
  • 此處根對象就是個數組,因此會生成一個對應的數組對象
  • 數組里面有字典,因此字典會生成一個NSDictionary
  • 因此數組讀出來就是 數組里面有字典,字典里面有name和icon兩個key

plist文件使用常見問題

  • 項目里面的某個.m文件無法使用

    • 檢查:Build Phoses -> Complie Sources
  • 項目里面的某個資源文件(比如plist、音頻等)無法使用

    • 檢查:Build Phoses -> Copy Bundle Resources
  • 添加plist文件的時候,無論plist在哪個文件夾里,都不能叫Info

    作者:黎明豌豆

    出處:http://www.cnblogs.com/PeaZora/

    本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此字段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM