iOS属性反射

iOS属性反射:就是将对象的所有属性,用动态的方式取出来,并根据属性名,自动绑值。


- (NSArray*)propertyKeys

{

unsignedintoutCount, i;

objc_property_t*properties =class_copyPropertyList([selfclass], &outCount);

NSMutableArray*keys = [[NSMutableArrayalloc]initWithCapacity:outCount];

for(i =0; i < outCount; i++) {

objc_property_t property = properties[i];

NSString*propertyName = [[NSStringalloc]initWithCString:property_getName(property)encoding:NSUTF8StringEncoding];

[keys addObject:propertyName];

}

free(properties);

returnkeys;

}

- (BOOL)reflectDataFromOtherObject:(NSObject*)dataSource

{

BOOLret =NO;

for(NSString*key in  [self propertyKeys]) {

if([dataSource  isKindOfClass:[NSDictionary class]]) {

ret = ([dataSource valueForKey:key]==nil)?NO:YES;

}

else{

ret = [dataSourcerespondsToSelector:NSSelectorFromString(key)];

}

if(ret) {

id propertyValue = [dataSource valueForKey:key];

//该值不为NSNULL,并且也不为nil

if(![propertyValue isKindOfClass:[NSNull class]] && propertyValue!=nil) {

[self setValue:propertyValue forKey:key];

}

}

}

returnret;

}

/////使用方法

NSDictionary*dicJsonData;

EntityObject*objValue;

[objValue  reflectDataFromOtherObject:dicJsonData];//这样就可以完成对象的自动赋值了,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,762评论 0 9
  • 本篇文章在《iOS开发之Runtime常用示例总结》基础上修改,地址是「:」http://www.cocoachi...
    小__小阅读 1,839评论 1 3
  • 1、禁止手机睡眠[UIApplication sharedApplication].idleTimerDisabl...
    DingGa阅读 1,142评论 1 6
  • 盛夏时没怎么下大雨,立秋后大雨不断,近日简直是一天一阵暴雨的节奏。 又是好久没有回家了,这周末雨后回家,小村也展现...
    云飞燕_vera阅读 213评论 0 2
  • 原谅我记成了腊月初四 真是该死 以身谢罪可以嘛我的十六岁少女 六年的时间 身边很多人很多事朝我们打死也想不到的方向...
    秋子同学阅读 250评论 0 0