IOS开发-plist文件的使用-NSBundle使用

时间:2022-12-26 12:26:56

一. 概述

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

二. Plist文件

1. 什么是plist的文件?

plist全称为Property List也称为属性列表文件,它提供了一个方便的方法来存放简单的结构数据,通常为XML格式,Property List存放的数据类型是有限的,包括NSArray、NSDictionary、   NSString、 Boolean、NSNumber、NSData、NSDate。这种属性列表文件的扩展名是plist,因此也成为“Plist文件”.

注意:plist文件的根数据类型即解析plist文件得到的数据类型,只有两种NSArray或者NSDictionary。

IOS开发-plist文件的使用-NSBundle使用

2.创建plist文件

IOS开发-plist文件的使用-NSBundle使用IOS开发-plist文件的使用-NSBundle使用IOS开发-plist文件的使用-NSBundle使用

3. 创建plist文件中的数据

在xcode中打开即可点击+号添加数据并可选则数据类型如下图:

IOS开发-plist文件的使用-NSBundle使用

4.利用NSBundle解析plist文件:

1. 利用NSBundle可以访问某个资源包的内容
2. 如果访问软件中最主要资源包的内容,就应该利用mainBundle
NSBundle *bundle = [NSBundle mainBundle];
3. 利用NSBundle获取文件最主要的路径path,参数为文件名加上扩展名。
 NSString *path = [bundle pathForResource:@"describ" ofType:@"plist"];

也可以在文件名种带上扩展名,将扩展名参数置为nil

 NSString *path = [bundle pathForResource:@"describ.plist" ofType:nil];
4. 使用文件中的数组或字典
// 如果plist文件的根数据为数组
NSArray *imageArray = [NSArray arrayWithContentsOfFile:path];
// 如果plist文件的根数据为字典
NSDictionary *dict =[NSDictionary dictionaryWithContentsOfFile:path];

三. 使用Plist文件优化图片浏览器程序

1.将图片的名字和描述以字典数组的方式添加得到创建的plist文件中。创建好的文件如下图

IOS开发-plist文件的使用-NSBundle使用

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