iOS开发之如何将字典转为模型

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

        刚刚学习了如何读取plist,将plist中的字典对象转成数组对象。字典和模型都可以存储数据,既然都可以存储对象,那么为什么要把plist中的字典转成模型呢?

        字典 :通过字符串类型的key来取值。(一般情况下,设置数据和取出数据都使用"字符串类型的key",编写这些key时,编译器不会有任何友善提示,需要手动敲写字符串key,key容易写错,而且如果写错,编译器不会有任何警告和报错,容易造成设错数据或者取错数据)

        模型 :用来存放数据的类, 继承自NSObject。(我感觉就像java中的javabean)所谓模型,其实就是数据模型,专门用来存放数据的对象,用它来表示会更加专业。模型设置数据和取出数据都是通过它的属性,,属性名如果写错,编译器会马上报错,因此保证了数据的正确性。使用模型访问属性时, 编译器会提供一系列的提示,提高编码效率。


首先自定义一个模型类,属性和字典中的要对应

/** Shop.h */
#import <Foundation/Foundation.h>@interface Shop : NSObject/** 商品名称 */
@property(nonatomic, copy) NSString *name;/** 商品图片 */
@property(nonatomic, copy) NSString *icon;-(instancetype)initWithDict:(NSDictionary *)dict;+(instancetype)shopWithDict:(NSDictionary *)dict;@end
/** Shop.m */
#import "Shop.h"@implementation Shop
/** 用字典对象来初始化模型 */
-(id)initWithDict:(NSDictionary *)dict {if(self == [super init]) {self.name = dict[@"name"];self.icon = dict[@"icon"];}return self;
}+(id)shopWithDict:(NSDictionary *)dict {return [[self alloc]initWithDict:dict];
}@end

最后在ViewController中将字典转成模型

/** 所有商品数据 */
@property (strong, nonatomic)NSArray *shops;//这个方法是重写的getter方法,懒加载方式
- (NSArray *)shops {if(_shops == nil) {//加载plist数据NSBundle *bundle = [NSBundle mainBundle];NSString *file = [bundle pathForResource:@"shops" ofType:@"plist"];NSArray *dictArr = [NSArray arrayWithContentsOfFile:file];NSLog(@"%@", dictArr);//new一个可变数组存储模型对象NSMutableArray *shopArr = [NSMutableArray array];for (NSDictionary *dict in dictArr) {//调用Shop的类方法将字典转成模型Shop *shop = [Shop shopWithDict:dict];[shopArr addObject:shop];}//将模型数组赋值给_shops_shops = shopArr;}return _shops;
}


转载于:https://my.oschina.net/shenhuniurou/blog/626820

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

王道操作系统考研笔记——1.1.4 操作系统的运行机制和体系结构

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 文章目录1.1.4 操作系统的运行机制和体系结构1.1.4.1 两种指令、两种处理器状态、两种程序1.1.4.2 操作系统的内核1.1.4.3 操作系统的体系结构1.1.4.4 小结1.1…

计算机动画的主要应用领域,简述计算机的主要特点和主要应用领域

1."简述计算机的主要特点和主要应用领域特点:运算速度快计算精度高具有记忆能力具有逻辑判断能力在程序控制下自动工作" 2."应用领域科学计算信息处理和管理计算机辅助系统过程控制人工智能" 3."计算机硬件系统由哪几部分组成输入设备输出设备存储器运…

How to remove replication in SyteLine V2

以前曾经写了一篇《How to remove replication in Syteline》http://www.cnblogs.com/insus/archive/2011/12/20/2294831.html 过于简单。 由于SyteLine采用共享License的授技术&#xff0c;如果你从一个正式的数据库复制一个备份&#xff0c;恢复至另外一个站点上&#xff0c…

【Keras】基于SegNet和U-Net的遥感图像语义分割

上两个月参加了个比赛&#xff0c;做的是对遥感高清图像做语义分割&#xff0c;美其名曰“天空之眼”。这两周数据挖掘课期末project我们组选的课题也是遥感图像的语义分割&#xff0c;所以刚好又把前段时间做的成果重新整理和加强了一下&#xff0c;故写了这篇文章&#xff0c…

随机验证码实现案例

众所周知&#xff0c;验证码在我们的生活中都是非常常见的&#xff0c;很多公司都在各种折腾各种各样的验证码&#xff0c;这里简要的用一个小案例来实现验证码的功能&#xff08;ps:其实我挺讨厌验证码这个东西的&#xff09;。 建立一个javaweb工程&#xff0c;新建login.htm…

每日一题——剑指 Offer24反转链表

如果您是第一次看我写的博客&#xff0c;可以给我点个赞并关注我吗&#xff0c;我会持续分享更多有意思的干货。 文章目录1 题目2 思路3 代码4 小结1 题目 剑指 Offer 24. 反转链表 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头…

手把手教你写专利申请书/怎样申请专利

手把手教你写专利申请书怎样申请专利摘要小前言&#xff08;一&#xff09;申请前的准备工作 1、申请前查询 2、其它方面的考虑 3、申请文件准备&#xff08;二&#xff09;填写专利申请系列文档 1、实际操作步骤 2、详细操作 3、经验分享、注意事项&#xf…

计算机无法更新正在撤销更改,win7系统无法完成更新正在撤销更改的解决办法...

win7系统无法完成更新正在撤销更改的解决办法&#xff1f;如果我们在使用win7更新系统的时候&#xff0c;出现了win7无法完成更新正在撤销更改请不要关闭你的计算机这样的提示&#xff0c;而且不关闭提醒就会一直收到提示。小编觉得可以在win7设置中的更新和安全里面进行高级选…

libhiredis.so.0.13: cannot open shared object file: No such file or directory in Unknown on line

vim /etc/ld.so.conf添加 /usr/local/lib (此处为动态链接库的目录) ldconfig 转载于:https://www.cnblogs.com/dongbo/p/8336542.html

mycat读写分离部署步骤

1.下载mycat:https://raw.githubusercontent.com/MyCATApache/Mycat-download/master/1.5-RELEASE/Mycat-server-1.5-RELEASE-20160301083012-linux.tar.gz2.安装mycat:tar -zxvf Mycat-server-1.5-GA-20160225120029-linux.tar.gzmv mycat /srv/mycat-1.5ln -s mycat-1.5 my…

王道操作系统考研笔记——1.1.6 系统调用

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 文章目录1.1.6 系统调用1.1.6.1 系统调用和作用1.1.6.2 系统调用和库函数1.1.6.3 系统调用背后的过程1.1.6.4 小结1.1.6 系统调用 知识总览 1.1.6.1 系统调用…

jQuery年月日(生日)选择器

我们在编辑用户资料时经常会遇到选择生日选项的问题&#xff0c;今天我给大家介绍如何使用js来实现年月日&#xff08;生日&#xff09;选择器&#xff0c;能够准确计算闰年的年月日&#xff0c;方便表单处理。 文章&#xff1a;http://www.helloweba.com/view-blog-263.html 演…

计算机设备行业特征,自动装配机在自动化设备行业具有的特点

伴随着社会经济的不断发展&#xff0c;工业生产的市场规模越来越大&#xff0c;人们的需求也越来越大。自动装配机在自动化设备行业具有哪些特点?鲁工自动化小编对自动装配机的特点进行了分析。1.自动装配机需要由多台工作台进行扩展和分级。上层控制器&#xff0c;用来控制二…

Elasticsearch使用REST API实现全文检索

Elasticsearch REST API elasticsearch支持通过http请求响应服务,http请求默认使用9200断开&#xff0c;因此通过curl命令&#xff0c;可以发送http请求&#xff0c;并得到json返回内容。常用的REST API包括一下几个&#xff1a; 检查ES集群状态 curl http://localhost:9200/_c…

解决 MyEclipse build workspace 慢,validation javascript 更慢的问题

自从升级了MyEclipse到7.0&#xff0c;项目Build的时候总是很慢&#xff0c;显示Validating 那些js&#xff0c;html文件。不管我怎么调整 Windows > Preference > MyEclipse > Validation或者是manage validation,都没有用。 我公司的电脑是Core2 Duo CPU T7250 2.0…

Netty实例-简单的服务端-client实现,凝视具体

书籍推荐&#xff1a; 实例代码 &#xff1a; http://download.csdn.net/detail/jiangtao_st/7677503Netty Server端实现/*** * <p>* Netty Server Simple* </p>* * author 卓轩* 创建时间&#xff1a;2014年7月7日* versi…

数据结构杂谈(四)

本文的所有代码均由C编写 4 双链表、循环链表和静态链表 文章目录4 双链表、循环链表和静态链表4.1 双链表4.1.1 双链表的定义4.1.2 双链表的初始化4.1.2 双链表的后插操作4.1.3 双链表的后删操作4.1.4 双链表的销毁操作4.2 循环链表4.2.1 循环链表的概念4.2.2 循环单链表4.2.2…

量子计算机怎么储存,什么是量子计算机_量子计算机原理_量子计算的两种有效方法...

量子计算机是一种可以实现量子计算的机器&#xff0c;是一种通过量子力学规律以实现数学和逻辑运算&#xff0c;处理和储存信息能力的系统。它以量子态为记忆单元和信息储存形式&#xff0c;以量子动力学演化为信息传递与加工基础的量子通讯与量子计算&#xff0c;在量子计算机…

Spring注解依赖注入的三种方式的优缺点以及优先选择

当我们在使用依赖注入的时候&#xff0c;通常有三种方式&#xff1a; 1.通过构造器来注入&#xff1b; 2.通过setter方法来注入&#xff1b; 3.通过filed变量来注入&#xff1b; 那么他们有什么区别吗&#xff1f;应该选择哪种方式更好&#xff1f; 代码示例&#xff1a; Const…