setValuesForKeysWithDictionary :今天发现这个高大上的功能,让我心奋不已,以后妈妈再也不用担心模型属性多了,再也不用担心将字典中的值赋值到模型中的麻烦操作了。

模型的.h文件

#import <Foundation/Foundation.h>@interface appModel : NSObject
@property(nonatomic,copy)NSString * name;
@property(nonatomic,copy)NSString * icon;
-  (instancetype)initWithApp:(NSDictionary *)dict;
+ (instancetype)appWithDict:(NSDictionary *)dict;
@end

模型的.m文件

@implementation appModel
- (instancetype)initWithApp:(NSDictionary *)dict
{//构造方法中必须有self = [super init]的判断if (self =[super init]) {//将字典中的数据取出,赋值给模型 self.name = dict[@"name"];self.icon = dict[@"icon"];}return  self;
}
/***  也可以通过类方法进行取值**  @param dict <#dict description#>**  @return <#return value description#>*/
+ (instancetype)appWithDict:(NSDictionary *)dict
{return  [[appModel alloc] initWithApp:dict];
}
@end

看到我们在构造方法中做的事情了吧,目前只有两个属性需要赋值,试想如果我们需要给一千个属性进行赋值,那么我们的工作是多么枯燥无味,而且为了一个这么没有技术含量的事情话费这么多的时间是没有必要的。所以xcode提供了setValuesForKeysWithDictionary:这方法进行赋值,直接减少了我们的工作量。代码如下:

@implementation herosModel
/***  类方法*  辅助功能 同构造方法功能一致*/
+(instancetype)herosModelWithDict:(NSDictionary*) dict
{return  [[herosModel alloc]initWithDict:dict];
}
/***  构造方法*/
-(instancetype)initWithDict:(NSDictionary*)dict
{//需要先判断一下父类方法if (self=[super init]) {//通过映射的方法,将字典中的每一个元素根heros中的属性进行逐个映射;
        [self setValuesForKeysWithDictionary:dict];}return  self;
}
@end

setValuesForKeysWithDictionary: ,非常好用,不需要你来一一的给对象赋值而直接从字典初始化即可,但用的不好会经常崩溃!这个希望大家在使用过程中多注意。

转载于:https://www.cnblogs.com/pengpengzhang/p/4555003.html

setValuesForKeysWithDictionary:的用途相关推荐

  1. Java的反射作用_浅析Java 反射机制的用途和缺点

    反射的用途 Uses of Reflection Reflection is commonly used by programs which require the ability to examin ...

  2. typedef的四个用途和两大陷阱

    typedef的四个用途和两个陷阱 --------------------------------- 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如: c ...

  3. android怎么监听多点触摸_什么是多点触控技术,有哪些用途

    自从乔布斯将触控技术用于苹果手机上,很多的手机厂商纷纷效仿,触控技术几乎成为手机的"标配".其实,触控技术早就存在,只是一直未能大面积用于各种设备中,本文将带您认识神奇的触控技术. ...

  4. 网络新手ip隐藏器_动态IP代理的用途

    在如今互联网迅速发展的时代,我们的生活几乎离不开网络,而且网络也逐渐成为了大家赖以生存的工作.如何更好地运用网络已然成为了很多人的工作重心.对于互联网行业工作者来说,对于动态IP代理已经很普遍,但是我 ...

  5. 中key的用途_Micro Focus Operations Bridge Manager中的多个(RCE)漏洞

    从供应商的网站上. OBM作为操作桥为您的IT操作提供了一个单一的控制中心.所有来自服务器.网络.应用程序.存储和基础设施中其他IT孤岛的事件和性能管理数据都会被整合到一个先进的中央事件控制台的单一事 ...

  6. Javascript闭包和闭包的几种写法及用途

    好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一些实用的东西,主要将闭包的写法.用法和用途.  一.什么 ...

  7. android之android.intent.category.DEFAULT的用途和使用

    1.要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent. Explicit Intent明确的指定了要启动的Acitivity , ...

  8. using的几种用途

    using 常用来引用命名空间 1 using System; 2 using System.Data; 3 using System.Data.SqlClient; 4 using System.C ...

  9. (6)解构赋值的用途

    解构赋值的用途 1.交换变量的值 var a = 100; var b = 200; var t; t = a; a = b; b = t; //解构赋值的写法完成[ES6交换变量的值] var x ...

  10. 【转】【iOS知识学习】_视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途...

    原文网址:http://blog.csdn.net/weasleyqi/article/details/8090373 iOS视图控制对象生命周期-init.viewDidLoad.viewWillA ...

最新文章

  1. 使用Nginx的proxy_cache缓存功能取代Squid
  2. Spring Security 实战干货:客户端OAuth2授权请求的入口在哪里
  3. c语言符合运算符的运算顺序,二 如何学习C语言的运算符和运算顺序
  4. 事物与持久化_揭开Redis面纱,发布订阅、事务、安全、持久化
  5. 一年中最后一个月的最后一天说说_一年的最后一天说说
  6. 登录页面(通过数据库查询密码是否正确)
  7. 向Redis中存入JSON格式数据
  8. aSRVCC信令流程(振铃中SRVCC)
  9. Clickhouse其它类型表引擎(Live View、Null、URL)
  10. 组原4_指令偏移寻址
  11. 【阅读笔记】低照度图像增强-《Fast efficient algorithm for enhancement of low lighting video》
  12. 微信视频号如何流量变现赚钱呢?
  13. Python 实现动态解析阿里云DNS记录
  14. 【历史上的今天】3 月 12 日:万维网概念被提出;Google Code 停运;仙童半导体公司被收购
  15. 仿ifeng可翻阅上下滚动新闻
  16. 【chatgpt代码系列】激光定位激光与地图匹配置信度算法
  17. 马克思 第四章 资本主义的形成及其本质
  18. 【python拼图】遍历文件夹后,自动拼接图像成正方形图,或者指定行数显示
  19. 软件测试工程职场发展细谈
  20. 小王子(LCA的运用)

热门文章

  1. 「大学生offer内推计划」:阿里/百度/华为等一线大厂都在抢这样的人!
  2. Memcached、Redis、RabbitMQ
  3. 习题4-6 水仙花数(20 分)
  4. Spring Boot 中使用WebJars
  5. synchronized与static synchronized 的区别
  6. BZOJ 1406: [AHOI2007]密码箱( 数论 )
  7. [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!(续)...
  8. js本地存储解决方案(localStorage与userData)
  9. iphone中扫描wifi热点
  10. C#基础知识(收藏)