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

  1. 解析plist文件(字典里包着数组,数组中又包含字典)

    #import "RootTableViewController.h" #import "City.h" @interface RootTableViewCon ...

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

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

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

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

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

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

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

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

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

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

  7. plist文件

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

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

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

  9. plist文件的使用

    什么是plist文件 直接将数据写在代码里面,不是一种合理的做法.如果经常改,就要经常翻开对应的代码进行修改,造成代码扩展性低 因此,可以考虑将经常变的数据放在文件中进行存储,程序启动后从文件中读取最 ...

随机推荐

  1. Log POST Data in Nginx

    先编译Nginx的echo module: ./configure --add-module=./echo-nginx-module-0.54 make make install 可以在github上 ...

  2. 判断客户端使用的是安卓还是苹果,然后加载对应的css文件

    <script type="text/javascript" charset="utf-8"> var browser = { versions: ...

  3. [1] [转]软件架构之三层架构和MVC的关系

    注:本文章内所有内容都来自互联网,本人主要是起了一个收集的作用 又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条化了.因为它们都在逻辑上将应用程序划为三块,凑了一个数字3,就有人非要把它们联 ...

  4. Docker Machine 简介

    Docker Machine 是什么? Docker Machine 是 Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在 ...

  5. Android自定义简洁版EditText

    Android开发中有些主题的EditText不能让我们满意,我们通常希望文本输入框是一条直线,这样显得简洁又美观. 这里我们自定义了一个MyEditText类,继承EditText类,可以实现一条线 ...

  6. Windows系统完全退出VMware方法

    原始日期:2013-11-30 16:09 事件起因:本来机子上装的Vbox,装了个winXp系统,目的是将一些开发用地软件工具神马的安装在虚拟机,保证主机的流畅稳定.无奈,Vbox对主机与虚拟机的文 ...

  7. Java中的事件监听机制

    鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...

  8. css的各种选择器

    一.基本选择器 1. * 通用元素选择器,匹配任何元素 2. E 标签选择器,匹配所有使用E标签的元素 3. .info class选择器,匹配所有class属性中包含info的元素 4. #foot ...

  9. 一些爬虫中的snippet

    1.tornado 一个精简的异步爬虫(来自tornado的demo) #!/usr/bin/env python import time from datetime import timedelta ...

  10. Spring实现IoC的多种方式

    目录 一.使用XML配置的方式实现IOC 二.使用Spring注解配置IOC 三.自动装配 四.零配置实现IOC 五.示例下载 控制反转IoC(Inversion of Control),是一种设计思 ...