一. 概述
上文中的圖片瀏覽器的實例,在數據的使用上做的很不好,由於將圖片數據寫到了代碼里,不是一種合理的做法。如果數據經常改,就要經常翻開對應的代碼進行修改,造成代碼擴展性低,因此,可以考慮將經常變的數據放在文件中進行存儲,程序啟動后從文件中讀取最新的數據。如果要變動數據,直接修改數據文件即可,不用修改代碼。而存放數據的文件陳偉plist文件。
二. Plist文件
1. 什么是plist的文件?
plist全稱為Property List也稱為屬性列表文件,它提供了一個方便的方法來存放簡單的結構數據,通常為XML格式,Property List存放的數據類型是有限的,包括NSArray、NSDictionary、 NSString、 Boolean、NSNumber、NSData、NSDate。這種屬性列表文件的擴展名是plist,因此也成為“Plist文件”.
注意:plist文件的根數據類型即解析plist文件得到的數據類型,只有兩種NSArray或者NSDictionary。
2.創建plist文件
3. 創建plist文件中的數據
在xcode中打開即可點擊+號添加數據並可選則數據類型如下圖:
4.利用NSBundle解析plist文件:
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource:@"describ" ofType:@"plist"];
也可以在文件名種帶上擴展名,將擴展名參數置為nil
NSString *path = [bundle pathForResource:@"describ.plist" ofType:nil];
// 如果plist文件的根數據為數組 NSArray *imageArray = [NSArray arrayWithContentsOfFile:path]; // 如果plist文件的根數據為字典 NSDictionary *dict =[NSDictionary dictionaryWithContentsOfFile:path];
三. 使用Plist文件優化圖片瀏覽器程序
1.將圖片的名字和描述以字典數組的方式添加得到創建的plist文件中。創建好的文件如下圖
2. 代碼的修改.使用plist文件之后只需要修改上個實例的imageData方法
- (NSArray *)imageData { // 懶加載必須先判斷是否已經加載了數據 if(_imageData == nil) { // 獲取plist文件路徑 //NSString *path = [[NSBundle mainBundle] pathForResource:@"imageData" ofType:@"plist"]; NSString *path = [[NSBundle mainBundle] pathForResource:@"imageData.plist" ofType:nil]; // 從plist文件解析數組 _imageData = [NSArray arrayWithContentsOfFile:path]; } return _imageData; }
小結:
使用plist文件之后是我們的程序更加靈活,將數據和代碼分開,需要增刪數據時不必再修改代碼。
圖片劉瀏覽器pilist