[How to]如何自定义plist文件和读取plist文件内容
1.简介
plist作为IOS的固化文件,就好比java中properties文件,但是在IOS中plist是可读写的。
本文将介绍自定义静态的plist文件。
2.自定义静态plist文件
右击你的目的文件夹,然后选择【New File....】进行如下选择:

我们创建了一个goods的plist文件,它的默认内容是:

我们预计他是包含一个团购的cell内容,包含上平图片、名称、价格和当前购买人数
他是一个以数组,元素为字典类型,字典中以保存图片、名称、价格和当前购买人数信息:
可以如下定义:

为了简便起见,我们在数组中定义了25个字典元素,其中内容都差不多,只有售出数和价格有差别。
3.懒加载方式读取plist内容
1.定义Model,注意model内的属性名称和plist中的属性名称必须一致,以为后续利用字典进行方便的初始化model
同时建立类方法来初始化model和加载plist
#import <Foundation/Foundation.h> @interface XFGoodModel : NSObject @property (nonatomic,copy) NSString *name; @property (nonatomic,copy) NSString *image; @property (nonatomic,assign) NSInteger price; @property (nonatomic,assign) NSInteger soldNum; - (instancetype)initWithDic:(NSDictionary *)dic; + (instancetype)goodWithDic:(NSDictionary *)dic; + (NSArray *)goodsList; @end
2.实现初始化和加载方法
//
// XFGoodModel.m
// How to create groupBuy page
//
// Created by apple on 15/12/15.
// Copyright © 2015年 apple. All rights reserved.
//
#import "XFGoodModel.h"
@implementation XFGoodModel
- (instancetype)initWithDic:(NSDictionary *)dic
{
if (self = [super init])
{
// 利用字典来进行属性初始化
[self setValuesForKeysWithDictionary:dic];
}
return self;
}
+ (instancetype)goodWithDic:(NSDictionary *)dic
{
return [[self alloc] initWithDic:dic];
}
+ (NSArray *)goodsList
{
// 加载plist
NSString *path = [[NSBundle mainBundle] pathForResource:@"goods" ofType:@"plist"];
NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];
// 字典转模型
NSMutableArray *tempArray = [NSMutableArray array];
for (NSDictionary *dic in dictArray)
{
XFGoodModel *good = [XFGoodModel goodWithDic:dic];
[tempArray addObject:good];
}
return tempArray;
}
@end
我们将plist的加载和初始化都封装进了对应的model中。
3. 加载model
一般我们会在controller中将plist中的数据加载以便于呈现,在controller中我们使用懒加载的方式进行plist数据的加载
一般可以这样做:
import "ViewController.h"
#import "XFGoodModel.h"
@interface ViewController ()
@property (nonatomic,strong) NSArray *goodsList;
@end
@implementation ViewController
/**
* 懒加载plist信息
*/
-(NSArray *)goodsList
{
// 如果未空就进行加载
if(!_goodsList)
{
_goodsList = [XFGoodModel goodsList];
}
return _goodsList;
}
测试一下,基本上plist的加载都可以按照此方式进行操作,唯一需要注意的是根据plist的结构定义自己的model并根据plist结构进行循环初始化model。
[How to]如何自定义plist文件和读取plist文件内容的更多相关文章
- spring 框架的xml文件如何读取properties文件数据
spring 框架的xml文件如何读取properties文件数据 第一步:在spring配置文件中 注意:value可以多配置几个properties文件 <bean id="pro ...
- java读取 500M 以上文件,java读取大文件
java 读取txt,java读取大文件 设置缓存大小BUFFER_SIZE ,Config.tempdatafile是文件地址 来源博客http://yijianfengvip.blog.163.c ...
- c文件二进制读取写入文件、c语言实现二进制(01)转化成txt格式文本、c读取文件名可变
c语言实现二进制(01)转化成txt格式文本: 下面的程序只能实现ascall对应字符转换,如果文件内出现中文字符,则会出现错误. 本程序要自己创建个文本格式的输入文件a1.txt,编译后能将文本文件 ...
- php操作文件(读取写入文件)
一,PHP如何读取文件 PHP读取文件可以读取当前服务器或远程服务器中的文件.其步骤是:打开文件.读文件和关闭文件. 1,PHP如何打开文件 使用PHP函数fopen()打开一个文件,fopen()一 ...
- [Python] python3 文件操作:从键盘输入、打开关闭文件、读取写入文件、重命名与删除文件等
1.从键盘输入 Python 2有两个内置的函数用于从标准输入读取数据,默认情况下来自键盘.这两个函数分别是:input()和raw_input(). Python 3中,不建议使用raw_input ...
- jspsmart(保存文件)+poi(读取excel文件)操作excel文件
写在前面: 项目环境:jdk1.4+weblogic 需求:能上传excel2003+2007 由于项目不仅需要上传excel2003,还要上传excel2007,故我们抛弃了jxl(只能上传exce ...
- Node.js——fs模块(文件系统),创建、删除目录(文件),读取写入文件流
/* 1. fs.stat 检测是文件还是目录(目录 文件是否存在) 2. fs.mkdir 创建目录 (创建之前先判断是否存在) 3. fs.writeFile 写入文件(文件不存在就创建,但不能创 ...
- 在JavaScript文件中读取properties文件的方法
假设有JavaScript文件叫做:readproperties.js,这个文件需要读取config.properties这个配置文件,步骤如下: 1. 下载插件jquery.i18n.proper ...
- C#写入(覆盖形式)数据到CSV文件 和 读取CSV文件
/// <summary> /// 写入数据到CSV文件,覆盖形式 /// </summary> /// <param name="csvPath"& ...
随机推荐
- JS执行上下文(执行环境)详细图解
JS执行上下文(执行环境)详细图解 先随便放张图 我们在JS学习初期或者面试的时候常常会遇到考核变量提升的思考题.比如先来一个简单一点的. console.log(a); // 这里会打印出什么? v ...
- BZOJ3521 [Poi2014]Salad Bar 【线段树 + 单调栈】
题目链接 BZOJ3521 题解 容易想到用前缀和搞 如果我们令\(p\)为\(1\),\(j\)为\(-1\),记前缀和为\(s[i]\) 我们就是要找到一段区间\([l,r]\),使得 \[\fo ...
- BZOJ1912 APIO2010 洛谷P3629 巡逻
Description: 在一个地区中有 n 个村庄,编号为 1, 2, ..., n.有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通过这些道路到达其 他任 ...
- [zhuan]arm中的汇编指令
http://blog.csdn.net/qqliyunpeng/article/details/45116615 一. 带点的(一般都是ARM GNU伪汇编指令) 1. ".text& ...
- 遇见Flask-Script
Flask-Script是Flask的命令行扩展包,使用它可以通过命令行的形式操作Flask项目, 例如,可通过命令启动一个发版本的服务器,设置数据库和定时任务等. 类似Django的manage.p ...
- 爬虫服务集群处理nginx返回504
最近在对爬虫服务做分布式服务的时候总是遇到服务器返回504,搞了两天才发现原来是nginx中有对超时的设置参数,自己都是用默认的,然而客户端的等待时间超过了nginx默认的超时设置 修改 keepal ...
- JQuery源码实现
技术提高篇--- 推荐--- 动脑学院--- http://www.toutiao.com/a6368703139592569089/
- Android之简易音乐播发器
布局主要代码之ListView: <span style="font-size:14px;"> <ListView android:id="@+id/m ...
- [洛谷P2261] [CQOI2007]余数求和
洛谷题目链接:[CQOI2007]余数求和 题目背景 数学题,无背景 题目描述 给出正整数n和k,计算G(n, k)=k mod 1 + k mod 2 + k mod 3 + - + k mod n ...
- [洛谷P3628] [APIO2010]特别行动队
洛谷题目链接:[APIO2010]特别行动队 题目描述 你有一支由 n 名预备役士兵组成的部队,士兵从 1 到 \(n\) 编号,要将他们拆分 成若干特别行动队调入战场.出于默契的考虑,同一支特别行动 ...