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文件 直接将数据写在代码里面,不是一种合理的做法.如果经常改,就要经常翻开对应的代码进行修改,造成代码扩展性低 因此,可以考虑将经常变的数据放在文件中进行存储,程序启动后从文件中读取最 ... 
随机推荐
- re 学习随便
			. 任意一个字符 \转义字符 * 字符重复0--多次 + 字符重复1-多次 ? 字符重复0-1次 ^行首匹配 或者在一个字符集中表示取反 \$ 匹配字符串末尾 \b 匹配\w 与\w 之间的 \B ... 
- CSS 简单了解(二)
			我们第一天说了简单的HTML,第二天说了简单的CSS.那么今天.咱们就来说一说他们的结合如何使用吧! 首先说引用方式,和使用方法吧! 1.内部样式表.(放入<head>中) <hea ... 
- Python学习:基本概念
			Python学习:基本概念 一,python的特点: 1,python应用场景多;爬虫,网站,数据挖掘,可视化演示. 2,python运行速度慢,但如果CPU够强,这差距并不明显. 3,严格的缩进式编 ... 
- Bash环境配置文件
			一.环境配置文件读取优先级 其中~/.bash_profile,~/.bash_login,~/.profile三个文件只有一个有效,查找优先级从左至右降低.bash会一直检查是否有~/.bashrc ... 
- JavaScript Trick
			JavaScript 判断 一个元素 是否在 数组中 : indexOf 原理 : array.indexOf(item) 如果 item 不在 array 中 , 则返回 -1 ; 如果 item ... 
- 就是要你懂Java中volatile关键字实现原理
			原文地址http://www.cnblogs.com/xrq730/p/7048693.html,转载请注明出处,谢谢 前言 我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是j ... 
- Java线程池入门必备
			线程池 一. 线程池的简介 1.什么是线程池? 最早期的工作线程处理任务的模型.一个任务的到来,会伴随着线程的创建,当处理完任务后,线程会被销毁,资源回收.这种一个任务一个线程一系列创建销毁的模式 ... 
- 《基于Node.js实现简易聊天室系列之详细设计》
			一个完整的项目基本分为三个部分:前端.后台和数据库.依照软件工程的理论知识,应该依次按照以下几个步骤:需求分析.概要设计.详细设计.编码.测试等.由于缺乏相关知识的储备,导致这个Demo系列的文章层次 ... 
- python+NLTK 自然语言学习处理二:文本
			在前面讲nltk安装的时候,我们下载了很多的文本.总共有9个文本.那么如何找到这些文本呢: text1: Moby Dick by Herman Melville 1851 text2: Sense ... 
- SVG制作简单的图形
			圆形 circle <svg width="200" height="200" > <circle cx="100" cy ... 
