<span style="font-size:18px;"><pre name="code" class="objc">#import <Foundation/Foundation.h>
@interface BaseModel : NSObject
- (id)initWithDic:(NSDictionary *)jsonDic;
- (void)changeDicToModel:(NSDictionary *)jsonDic;
@end
</span>
<span style="font-size:18px;">#import "BaseModel.h"
@implementation BaseModel
- (id)initWithDic:(NSDictionary *)jsonDic
{
if(self = [super init])
{
[self changeDicToModel:jsonDic];
}
return self;
}
- (void)changeDicToModel:(NSDictionary *)jsonDic
{
NSMutableDictionary *keyValueDic = [NSMutableDictionary dictionary];
for(NSString *jsonDicKey in jsonDic)
{
[keyValueDic setObject:jsonDicKey forKey:jsonDicKey];
NSString *jsonKey = [keyValueDic objectForKey:jsonDicKey];
id jsonValue = [jsonDic objectForKey:jsonKey];
SEL sel =[self changeStringToSEL:jsonKey];
if([jsonValue isKindOfClass:[NSNull class]])
{
jsonValue = @"";
}
if([self respondsToSelector:sel])
{
[self performSelector:sel withObject:jsonValue]; //[self setName:@"zhangsan"
// self.name = @"zhangsan";
} // 字典转模型成功
}
}
- (SEL)changeStringToSEL:(NSString *)jsonKey
{
NSString *firstStr = [jsonKey substringToIndex:1];
firstStr = [firstStr uppercaseString];
NSString *SecondStr = [jsonKey substringFromIndex:1];
NSString *SELStr = [NSString stringWithFormat:@"set%@%@:",firstStr,SecondStr];
SEL sel = NSSelectorFromString(SELStr); //把字符串转换成 setName:
return sel;
}</span>
<span style="font-size:18px;">@end
</span>