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文件

- 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文件解析

- 一旦加载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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此字段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利
plist文件的使用的更多相关文章
- plist文件、NSUserDefault 对文件进行存储的类、json格式解析
========================== 文件操作 ========================== Δ一 .plist文件 .plist文件是一个属性字典数组的一个文件: .plis ...
- ios开发之Info.plist文件相关配置
前言:在iOS开发中有些情况下需要对Info.plist文件进行配置,以下介绍几种相关配置.以后遇到需要配置的再更新... 开发环境:swift3.0.1,Xcode8.1 一,项目中需要使用第三方字 ...
- Excel文件转plist文件出现的文件编码问题
今天在测试时遇到了需要将大量整理好的Excel数据转换为plist文件的情况.百度了一下教程,发现虽然别人也遇到过类似的情况,但是有些讲的还是不够细致.所以做如下整理. 百度到的内容中有使用Mes ...
- IOS学习笔记之获取Plist文件读取数据
@property(nonatomic,strong) NSArray *pic; //创建数组属性 @property(nonatomic,assign) int index; //创建索引属性 @ ...
- plist文件的读取和xib加载cell
plist 文件读取 例如在工程里倒入了plist文件 在工程里需要用到plist文件里的信息,就需要把plist文件读取出来. 如程序: -(NSArray *)moreDataArr{ if (! ...
- plist文件
1.一般可以使用属性列表文件存储NSArray或者NSDictionary之类的数据,这种“属性列表文件”的扩展名是plist,因此也称为“plist文件” 2.接下来通过代码来解析Plist文件中的 ...
- Reveal分析IOS界面,plist文件读取
Reveal分析IOS界面,需要得到app的 softwareVersionBundleId上传到iphone中 , 而IOS8的iTunesMetadata.plist (设备路径/var/mobi ...
- iOS开发——UI基础-懒加载,plist文件,字典转模型,自定义view
一.懒加载 只有使用到了商品数组才会创建数组 保证数组只会被创建一次 只要能够保证数组在使用时才创建, 并且只会创建一次, 那么我们就称之为懒加载 lazy - (void)viewDidLoad 控 ...
- iOS,plist文件、pct文件,工程设置
1.使用pch文件 2.在info.plist中配置URL Schemes 3.plist配置拍照界面,复制,粘贴等菜单的显示语言 显示中文 4.使用非ARC库/ARC库 5.链接选项-Objc &a ...
随机推荐
- Nginx文件类型错误解析漏洞--攻击演练
今天看书看到其中提到的一个漏洞,那就是Nginx+PHP的服务器中,如果PHP的配置里 cgi.fix_pathinfo=1 那么就会产生一个漏洞.这个配置默认是1的,设为0会导致很多MVC框架(如T ...
- 【REST WCF】30分钟理论到实践
先来点理论知识,来自 http://www.cnblogs.com/simonchen/articles/2220838.html 一.什么是Rest REST软件架构是由Roy Thomas Fie ...
- [转]论acm与泡妞
abstract :本文从各个方面讨论了泡妞与做题之间的相似之处与不同点,尽量的站在一个公平的角度阐述这一问题,所得的研究成果填补了国内外的理论空白. - 泡了一个好妞就好像做了一道难题一样快感都是相 ...
- C程序两则
<span style="font-size:24px;">#include<iostream> using namespace std; int *fun ...
- ElasticSearch入门系列(四)分布式初探
序言:ElasticSearch致力于隐藏分布式系统的复杂性,以下的操作都是在底层自动完成的: 将你的文档分区到不同的容器或者分片(shards),他们可以存在于一个或多个节点中 将分片均匀的分配到各 ...
- 【jQuery EasyUI系列】使用属性介绍
1.ValidateBox The validatebox is designed to validate the form input fields.If users enter invalid v ...
- C# 属性、索引
属性(property): public string Name { get { return _name; } set { _name = value; } } 简写为: public string ...
- Bete冲刺第七阶段
Bete冲刺第七阶段 今日工作: web: 新增通知处理接口 ios: 重写登录逻辑,添加创建行程填写.注册 POP界面 目前所遇问题: web: web目前进展顺利,暂时还没有遇到编码的问题. iO ...
- AngularJS指令的详解
指令作为AngularJS中最为重要的部分,所以这个框架本身也是自带了比较多的的指令,但是在开发中,这些指令通常不能满足我们的需要,所以我们也是需要自定义一些指令的.指令是我们用来扩展浏览器能力的技术 ...
- js函数声明
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...