实现字典和对象转换的工具类

来源:互联网 发布:淘宝ipad横版 编辑:程序博客网 时间:2024/05/22 15:39
#import <Foundation/Foundation.h>@interface EntityHelper : NSObject//字典对象转为实体对象+ (void) dictionaryToEntity:(NSDictionary *)dict entity:(NSObject*)entity;//实体对象转为字典对象+ (NSDictionary *) entityToDictionary:(id)entity;@end
#import "EntityHelper.h"#import <objc/runtime.h>@implementation EntityHelper+ (void) dictionaryToEntity:(NSDictionary *)dict entity:(NSObject*)entity{    if (dict && entity) {                for (NSString *keyName in [dict allKeys]) {            //构建出属性的set方法            NSString *destMethodName = [NSString stringWithFormat:@"set%@:",[keyName capitalizedString]]; //capitalizedString返回每个单词首字母大写的字符串(每个单词的其余字母转换为小写)            SEL destMethodSelector = NSSelectorFromString(destMethodName);                        if ([entity respondsToSelector:destMethodSelector]) {                [entity performSelector:destMethodSelector withObject:[dict objectForKey:keyName]];            }                    }//end for            }//end if}+ (NSDictionary *) entityToDictionary:(id)entity{        Class clazz = [entity class];    u_int count;        objc_property_t* properties = class_copyPropertyList(clazz, &count);    NSMutableArray* propertyArray = [NSMutableArray arrayWithCapacity:count];    NSMutableArray* valueArray = [NSMutableArray arrayWithCapacity:count];        for (int i = 0; i < count ; i++)    {        objc_property_t prop=properties[i];        const char* propertyName = property_getName(prop);                [propertyArray addObject:[NSString stringWithCString:propertyName encoding:NSUTF8StringEncoding]];                //        const char* attributeName = property_getAttributes(prop);        //        NSLog(@"%@",[NSString stringWithUTF8String:propertyName]);        //        NSLog(@"%@",[NSString stringWithUTF8String:attributeName]);                id value =  [entity performSelector:NSSelectorFromString([NSString stringWithUTF8String:propertyName])];        if(value ==nil)            [valueArray addObject:[NSNull null]];        else {            [valueArray addObject:value];        }        //        NSLog(@"%@",value);    }        free(properties);        NSDictionary* returnDic = [NSDictionary dictionaryWithObjects:valueArray forKeys:propertyArray];//    NSLog(@"%@", returnDic);       return returnDic;}@end


0 0
原创粉丝点击