什么是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文件的使用的更多相关文章

  1. plist文件、NSUserDefault 对文件进行存储的类、json格式解析

    ========================== 文件操作 ========================== Δ一 .plist文件 .plist文件是一个属性字典数组的一个文件: .plis ...

  2. ios开发之Info.plist文件相关配置

    前言:在iOS开发中有些情况下需要对Info.plist文件进行配置,以下介绍几种相关配置.以后遇到需要配置的再更新... 开发环境:swift3.0.1,Xcode8.1 一,项目中需要使用第三方字 ...

  3. Excel文件转plist文件出现的文件编码问题

    今天在测试时遇到了需要将大量整理好的Excel数据转换为plist文件的情况.百度了一下教程,发现虽然别人也遇到过类似的情况,但是有些讲的还是不够细致.所以做如下整理.   百度到的内容中有使用Mes ...

  4. IOS学习笔记之获取Plist文件读取数据

    @property(nonatomic,strong) NSArray *pic; //创建数组属性 @property(nonatomic,assign) int index; //创建索引属性 @ ...

  5. plist文件的读取和xib加载cell

    plist 文件读取 例如在工程里倒入了plist文件 在工程里需要用到plist文件里的信息,就需要把plist文件读取出来. 如程序: -(NSArray *)moreDataArr{ if (! ...

  6. plist文件

    1.一般可以使用属性列表文件存储NSArray或者NSDictionary之类的数据,这种“属性列表文件”的扩展名是plist,因此也称为“plist文件” 2.接下来通过代码来解析Plist文件中的 ...

  7. Reveal分析IOS界面,plist文件读取

    Reveal分析IOS界面,需要得到app的 softwareVersionBundleId上传到iphone中 , 而IOS8的iTunesMetadata.plist (设备路径/var/mobi ...

  8. iOS开发——UI基础-懒加载,plist文件,字典转模型,自定义view

    一.懒加载 只有使用到了商品数组才会创建数组 保证数组只会被创建一次 只要能够保证数组在使用时才创建, 并且只会创建一次, 那么我们就称之为懒加载 lazy - (void)viewDidLoad 控 ...

  9. iOS,plist文件、pct文件,工程设置

    1.使用pch文件 2.在info.plist中配置URL Schemes 3.plist配置拍照界面,复制,粘贴等菜单的显示语言 显示中文 4.使用非ARC库/ARC库 5.链接选项-Objc &a ...

随机推荐

  1. PRML读书会第九章 Mixture Models and EM(Kmeans,混合高斯模型,Expectation Maximization)

    主讲人 网络上的尼采 (新浪微博: @Nietzsche_复杂网络机器学习) 网络上的尼采(813394698) 9:10:56 今天的主要内容有k-means.混合高斯模型. EM算法.对于k-me ...

  2. NVelocity学习笔记一——linq2sql+NVelocity完整demo

    (一)前言      刚刚进入新公司,看公司的项目,发现开发流程几乎和以前的完全不同,再看看页面布局竟然没有发现html.神马情况????一番探究发现使用了NVelocity模板引擎开发的.于是乎花了 ...

  3. SQLServer(MSSQL)、MySQL、SQLite、Access相互迁移转换工具 DB2DB v1.2

    最近公司有一个项目,需要把原来的系统从 MSSQL 升迁到阿里云RDS(MySQL)上面.为便于测试,所以需要把原来系统的所有数据表以及测试数据转换到 MySQL 上面.在百度上找了很多方法,有通过微 ...

  4. 完全开源Android网络框架 — 基于JAVA原生的HTTP框架

    HttpNet网络请求框架基于HttpUrlConnection,采用Client + Request + Call的请求模型,支持https默认证书,数字安全证书.支持http代理!后续将会实现队列 ...

  5. 在Windows上将ReactNative集成到现有的Android项目

    React Natvie的官方文档的 Integrating with Existing Apps 已经很详细地教我们如何将React Natvie集成到现在的Android项目.我根据官方文档的步骤 ...

  6. jQuery jsonp无法捕获404、500状态错误

    转载:http://www.cnblogs.com/pao8041/p/4750403.html 不过上面的这个我用的不好,下次有机会用

  7. nios II--实验2——led软件部分

    软件开发 首先,在硬件工程文件夹里面新建一个software的文件夹用于放置软件部分:打开toolsàNios II 11.0 Software Build Tools for Eclipse,需要进 ...

  8. python 2.7 简单模拟登陆网站

    举个栗子,首先创建网络会话, 然后就可以用创建的session来访问网页了. session.get(URL) #-*- coding:utf-8 -*- import requests import ...

  9. 64-who 简明笔记

    显示已登录用户的信息 who [options] who am i who程序显示在本地系统上登录的用户的信息.这些信息包括每个用户的用户名.终端设备.登录时间和相应的远程主机名(如果可应用) 参数 ...

  10. pdo简单操作

    PDO(PHP Data Object) 是PHP 5新出来的东西,在PHP 6都要出来的时候,PHP 6只默认使用PDO来处理数据库,将把所有的数据库扩展移到了PECL,那么默认就是没有了我们喜爱的 ...