现在的位置: 首页 > 综合 > 正文

BaseModel(数据模型映射关系)

2013年12月12日 ⁄ 综合 ⁄ 共 928字 ⁄ 字号 评论关闭

#import "BaseModel.h"

@implementation BaseModel

-(id)initContentWithDic:(NSDictionary *)dic
{
    self = [super init];
    if (self) {
        [self dicToObject:dic];
    }
    
    return self;
}

//建立dic和对象之间的映射
-(NSDictionary *)dicObjectAtt:(NSDictionary *)jsonDic
{
    NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:jsonDic.count];
    for (id key in jsonDic) {
        [dic setObject:key forKey:key];
    }
    return dic;
}


-(SEL)stringToSel:(NSString *)modelKey
{
    NSString *first = [[modelKey substringToIndex:1] uppercaseString];
    NSString *end = [modelKey substringFromIndex:1];
    NSString *methodStr = [NSString stringWithFormat:@"set%@%@:", first, end];
    return NSSelectorFromString(methodStr);
}

//把字典里面的值通过映射找到对象属性并赋值
-(void)dicToObject:(NSDictionary *)dic
{
    for (id key in dic) {
        
        id modelKey = [[self dicObjectAtt:dic] objectForKey:key];
        
        if (modelKey) {
            //根据字符串生成set方法
            SEL action = [self stringToSel:modelKey];
            
            //给对象属性赋值
            if ([self respondsToSelector:action]) {
                id value = [dic objectForKey:key];
                [self performSelector:action withObject:value];
            }
        }
    }
}

@end


抱歉!评论已关闭.