你的位置:首页 > 软件开发 > 操作系统 > iOS开发之遍历Model类的属性并完善使用Runtime给Model类赋值

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

发布时间:2015-08-01 12:00:38
在上篇博客《iOS开发之使用Runtime给Model类赋值》中介绍了如何使用运行时在实体类的基类中添加给实体类的属性赋值的方法,这个方法的前提是字典的Key必须和实体类的Property Name相同,然后通过运行时来生成和执行Setter方法给Model类的属性赋值。  通过 ...

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

  在上篇博客《iOS开发之使用Runtime给Model类赋值》中介绍了如何使用运行时在实体类的基类中添加给实体类的属性赋值的方法,这个方法的前提是字典的Key必须和实体类的Property Name相同,然后通过运行时来生成和执行Setter方法给Model类的属性赋值。

  通过Runtime来给Model类属性赋值的好处是多多的,它便于代码的后期维护,并且提高了开发效率。当你拿到解析后的字典时你不用一个一个的通过key去把字典的值赋值给相应的Model类的属性,本篇博客中会给出如何去遍历Model中属性的值,并且给出字典的Key和Model的属性名不一样的情况我们该如何负值。

  接下来会在上一个博客代码基础上在Model基类中添加通过Runtime来遍历Model类的属性值。

  一、获取Model的实体属性

  1.要想遍历Model类的属性,首先得通过Runtime来获取该Model类有哪些属性,输出Model的所有属性的值可不像遍历Dictionary和Array那样一个for循环搞定的,下面的方法是通过Runtime来获取Model类的属性字符串,并以数组的形式返回。代码如下:

 1 ///通过运行时获取当前对象的所有属性的名称,以数组的形式返回 2 - (NSArray *) allPropertyNames{ 3   ///存储所有的属性名称 4   NSMutableArray *allNames = [[NSMutableArray alloc] init]; 5    6   ///存储属性的个数 7   unsigned int propertyCount = 0; 8    9   ///通过运行时获取当前类的属性10   objc_property_t *propertys = class_copyPropertyList([self class], &propertyCount);11   12   //把属性放到数组中13   for (int i = 0; i < propertyCount; i ++) {14     ///取出第一个属性15     objc_property_t property = propertys[i];16     17     const char * propertyName = property_getName(property);18     19     [allNames addObject:[NSString stringWithUTF8String:propertyName]];20   }21   22   ///释放23   free(propertys);24   25   return allNames;26 }

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

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

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。