利用runtime解析model

利用runtime解析model

by 伍雪颖

+ (instancetype)modelWithDictionary:
(NSDictionary
*) data{

return [[self
alloc]
initWithDictionary:data];

}

- (instancetype)initWithDictionary: (NSDictionary
*) data{

{

self = [super
init];

if (self) {

[self
assginToPropertyWithDictionary:data];

}

return
self;

}

}

-(void) assginToPropertyWithDictionary: (NSDictionary
*) data{

if (data ==
nil) {

return;

}

NSArray *dicKey = [data
allKeys];

for (int
i =
0; i < dicKey.count; i ++) {

SEL setSel = [self
creatSetterWithPropertyName:dicKey[i]];

if ([self
respondsToSelector:setSel]) {

NSString  *value = [NSString
stringWithFormat:@"%@",
data[dicKey[i]]];

[self
performSelectorOnMainThread:setSel

withObject:value

waitUntilDone:[NSThread
isMainThread]];

}

}

}

- (SEL) creatSetterWithPropertyName: (NSString
*) propertyName{

propertyName = propertyName.capitalizedString;

propertyName = [NSString
stringWithFormat:@"set%@:",
propertyName];

return
NSSelectorFromString(propertyName);

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-09 06:17:02

利用runtime解析model的相关文章

iOS开发&gt;学无止境 - 遍历Model类的属性并完善使用Runtime给Model类赋值

在前几天的一篇博客<iOS开发之使用Runtime给Model类赋值>中介绍了如何使用运行时在实体类的基类中添加给实体类的属性赋值的方法,这个方法的前提是字典的Key必须和实体类的Property Name相同,然后通过运行时来生成和执行Setter方法给Model类的属性赋值. 通 过Runtime来给Model类属性赋值的好处是多多的,它便于代码的后期维护,并且提高了开发效率.当你拿到解析后的字典时你不用一个一个的通过 key去把字典的值赋值给相应的Model类的属性,本篇博客中会给出如何

spring mvc利用MultipartResolver解析Multipart/form-data进行文件上传

之前的表单数据都是文本数据,现记录:利用MultipartResolver进行文件上传. ①首先,需引入commons-fileUpload和commons-io jar包,pom.xml文件的坐标: <properties>      <spring.version>3.2.1.RELEASE</spring.version>  </properties>  <dependencies>          <dependency> 

iOS开发之遍历Model类的属性并完善使用Runtime给Model类赋值

http://www.cocoachina.com/ios/20150807/12877.html 在上篇博客<iOS开发之使用Runtime给Model类赋值>中介绍了如何使用运行时在实体类的基类中添加给实体类的属性赋值的方法,这个方法的前提是字典的Key必须和实体类的Property Name相同,然后通过运行时来生成和执行Setter方法给Model类的属性赋值. 通过Runtime来给Model类属性赋值的好处是多多的,它便于代码的后期维护,并且提高了开发效率.当你拿到解析后的字典时你

ios开发runtime学习五:KVC以及KVO,利用runtime实现字典转模型

一:KVC和KVO的学习 #import "StatusItem.h" /* 1:总结:KVC赋值:1:setValuesForKeysWithDictionary实现原理:遍历字典,得到所有的key,value值,再利用kvc, setVaue forkey来为value赋值 2: [item setValue:@"来自即刻笔记" forKey:@"source"],内部的底层实现, 1.首先去模型中查找有没有setSource,找到,直接调用

使用XML序列化器生成XML文件和利用pull解析XML文件

首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message> <sms> <body> 陈驰0 </body> <date> 1462162910995 </date> <address> 1380 </address> <type> 1 </type> &

利用jsoup解析天气预报

java的一个开源的解析Html的程序jsoup将html进行解析,并且让我们可以像对css操作一样来获取解析之后的内容,本文即利用其特性进行解析 jsoup的开源jar包请自行下载 public class WeatherInfo {     /**      * @param args      */     public static void main(String[] args) {         getCityWeatherInfo();         //getCityAndU

利用XPath解析带有xmlns的XML文件

在.net中,编写读取xml 的程序中提示"未将对象引用设置到对象的实例",当时一看觉得有点奇怪.为什么在读取xml数据的时候也要实例化一个对象.google了才知道,xml文件中加入了xmlns表示名称空间,但同时Xpath也必须加上. 如之前我们的xml文件定义为: <Project Name="目标计划项目"> <Process Name="个人月度计划" Description="个人月度计划" Ve

iOS中利用 runtime 一键改变字体

http://www.cocoachina.com/ios/20160504/16109.html 本文为投稿文章,作者:HenryCheng(简书) 最近公司要在5月份举办个大型的发布会,所以在这之前要把版本稳定,界面提升,所以有很多细活要干.不过,趁前两天版本刚提交上线,这两天稍微闲一点,就把之前说的利用runtime一键改变字体的方法分享出来.有人会说,改变字体不是很简单吗,我直接找到字体名替换一下不就好了?客官不要急,先坐下来吃点瓜子,听我慢慢给你说来. 1.准备 我们新建一个项目名叫C

利用TinyXML解析XML文件

下载地址:TinyXML 解压缩TinyXML后,找到六个文件: tinystr.h.tinystr.cpp.tinyxml.h.tinyxml.cpp.tinyxmlerror.cpp.tinyxmlparser.cpp 将这六个文件放在你的C++工程中,跟你的源文件在同一目录下. 新建一个XML文件,命名为Students.xml : <Class name="计算机软件班"> <Students> <student name="张三&quo