一. 概述
上文中的图片浏览器的实例,在数据的使用上做的很不好,由于将图片数据写到了代码里,不是一种合理的做法。如果数据经常改,就要经常翻开对应的代码进行修改,造成代码扩展性低,因此,可以考虑将经常变的数据放在文件中进行存储,程序启动后从文件中读取最新的数据。如果要变动数据,直接修改数据文件即可,不用修改代码。而存放数据的文件陈伟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