Objective-C plist文件与KVC 的使用
plist文件是以类似xml形式构造数据,下面我们直接在xcode中创建完成一个plist文件, File-New-File-属性列表

我们可以选择存储类型。这里我构造一组数据,数据中的每个元素都是一个字典,字典中存放着name songName imageName 三个键值。

这样我们的plist文件就完成了,下面来说一说通过kvc的方式来读取plist文件。
kvc的概念简单说下
Key-Value-Coding(KVC)键值编码
我们主要使用的是KVC字典转模型,将plist文件中的数据以数据模型的形式读取。
在构造数据模型时应当使用以下方法 直接设置
- (void)setValuesForKeysWithDictionary:(NSDictionary<NSString *, id> *)keyedValues;
下面构造一个StarModel
@interface StarModel : NSObject
//歌手名
@property(nonatomic,copy)NSString *name;
//歌曲名
@property(nonatomic,copy)NSString *songName;
//图片名
@property(nonatomic,copy)NSString *imageName;
//初始化
- (instancetype)initWithStarModelDict:(NSDictionary*)dict;
//类方法
+ (instancetype)starModelwithDict:(NSDictionary*)dict;
@end
下面设置初始化方法,将字典转为模型
@implementation StarModel
- (instancetype)initWithStarModelDict:(NSDictionary*)dict {
self = [super init];
if (self) {
//KVC 字典转模型
[self setValuesForKeysWithDictionary:dict];
}
return self;
}
+ (instancetype)starModelwithDict:(NSDictionary*)dict {
return [[StarModel alloc] initWithStarModelDict:dict];
}
@end
这样我们的模型就构造好了。下面来读取吧。
由于我们plist文件的根节点是一个数组
我们以懒加载的方式来创建这个数组,并将从plist中读取的字典信息以模型的形式存储到数组中。
//懒加载
- (NSMutableArray*)arrayAllModel {
if (!_arrayAllModel) {
_arrayAllModel = [NSMutableArray array];
//获得路径并读取plist文件
NSString *starListPath = [[NSBundle mainBundle] pathForResource:@"starList" ofType:@"plist"];
NSArray *array= [NSArray arrayWithContentsOfFile:starListPath];
for (NSDictionary *dic in array) {
StarModel *star = [StarModel starModelwithDict:dic];
//存储所有结果
[_arrayAllModel addObject:star];
}
}
return _arrayAllModel;
}
大功告成。现在我们的数组中就都是存放了这些数据模型了。
测试一下数据吧。
for (StarModel *model in self.arrayAllModel) {
NSLog(@"%@,%@,%@",model.name,model.songName,model.imageName);
}

Objective-C plist文件与KVC 的使用的更多相关文章
- 解析plist文件(字典里包着数组,数组中又包含字典)
#import "RootTableViewController.h" #import "City.h" @interface RootTableViewCon ...
- 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 ...
- plist文件的使用
什么是plist文件 直接将数据写在代码里面,不是一种合理的做法.如果经常改,就要经常翻开对应的代码进行修改,造成代码扩展性低 因此,可以考虑将经常变的数据放在文件中进行存储,程序启动后从文件中读取最 ...
随机推荐
- 测序分析软件-phred的安装
1.进入phred官网,给作者写信,获得所需的软件,大约需要两三天的时间即可收到回信. 2.根据作者的指示下载,解压相应软件. 3.以笔者本人的安装为例unbuntu系统(phred自带的instal ...
- DNS域名解析的过程
一.主机解析域名的顺序 1.找缓存 2.找本机的hosts文件 3.找DNS服务器 注意: 配置IP和主机名时,要记得修改/etc/hosts文件,因为有些应用程序在主机内的进程之间通信的时候,会本机 ...
- Dom 简介
HTML DOM 简介 DOM 教程 DOM 节点 HTML DOM 定义了访问和操作 HTML 文档的标准. 您应该具备的基础知识 在您继续学习之前,您需要对以下内容拥有基本的了解: HTML CS ...
- 让gdb能打印C++中的容器类型
由于原生的gdb对vector,map等容器的支持不太好,所以找到了一个工具,将这个工具集成到gdb中,就可以实现map,vector等容器的内容的打印操作. 1.用vim将下方的代码拷贝到一个新的文 ...
- [leetcode-593-Valid Square]
Given the coordinates of four points in 2D space, return whether the four points could construct a s ...
- 在线SVN仓库实现:金山快盘+TortoiseSVN(Win)+SCPlugin(Mac)
前段时间一直在研究SVN在线托管,也尝试了网上推荐的免费托管网站. 但毕竟是是免费的,还是要受到比如空间大小.私有性等这样那样的限制,感觉有些麻烦. 而且,比较心疼自己在本地开发的时候积累的更新日志, ...
- php随机获取验证码
<?php $yzm = ""; for($i=0;$i<5;$i++) { $a = rand(0,9); //0-9随机数 $yzm.= $a; } echo jo ...
- 用CSS3实现无限循环的无缝滚动
有时候在页面的某个模块中,需要无限循环的滚动一些消息.那么如果我们用js实现无缝衔接滚动的思路是什么呢(比如我们这个模块是向上滚动的)? 克隆A一份完全一样的数据B放在原数据A的后面: 使用setIn ...
- Java泛型概念
1. 概述在引入范型之前,Java类型分为原始类型.复杂类型,其中复杂类型分为数组和类.引入范型后,一个复杂类型就可以在细分成更多的类型.例如原先的类型List,现在在细分成List<Objec ...
- 第一章:windows下 python 的安装和使用
1. 主流的python版本和大部分人使用的版本都是 2.7 和3.6 2.安装 python2.7 和 python3.6的步骤 1. 下载 python对应的版本:选择使用的 系统, 64位和32 ...