自己写一个Json解析的模型
2015-07-17 17:12
936 查看
#import "BaseModal.h"
@implementation BaseModal
-(instancetype)initWith:(NSDictionary *)dic{
if (self = [super init]) {
[self setValueFrom:dic];
}
return self;
}
//根据方法名 获取方法
-(SEL)getSetter:(NSString *)name{
NSString *str = [name capitalizedString];
NSString *setter = [NSString stringWithFormat:@"set%@:",str];
return NSSelectorFromString(setter);
}
//传进来的字典对象 的key必须与对象属性一一对应
-(void)setValueFrom:(NSDictionary *)dic{
NSArray *arr = dic.allKeys;
//循环遍历key
for (NSString *key in arr) {
SEL setter = [self getSetter:key];
if ([self respondsToSelector:setter]) {
id value = dic[key];
//字典中的对象进行处理 如果不是string类型 转变成string类型
if(![value isKindOfClass:[NSString class]]){
value = [value stringValue];
}
[self performSelector:setter withObject:value];
}
}
}
@end
在.h文件中 对初始化方法进行声明即可
@interface BaseModal : NSObject
-(instancetype)initWith:(NSDictionary *)dic;
@end
试用这个基类时 只要实体类 继承这个类,且用-(instancetype)initWith:(NSDictionary *)dic这个方法来实例化对象即可。
#import "BaseModal.h"
@implementation BaseModal
-(instancetype)initWith:(NSDictionary *)dic{
if (self = [super init]) {
[self setValueFrom:dic];
}
return self;
}
//根据方法名 获取方法
-(SEL)getSetter:(NSString *)name{
NSString *str = [name capitalizedString];
NSString *setter = [NSString stringWithFormat:@"set%@:",str];
return NSSelectorFromString(setter);
}
//传进来的字典对象 的key必须与对象属性一一对应
-(void)setValueFrom:(NSDictionary *)dic{
NSArray *arr = dic.allKeys;
//循环遍历key
for (NSString *key in arr) {
SEL setter = [self getSetter:key];
if ([self respondsToSelector:setter]) {
id value = dic[key];
//字典中的对象进行处理 如果不是string类型 转变成string类型
if(![value isKindOfClass:[NSString class]]){
value = [value stringValue];
}
[self performSelector:setter withObject:value];
}
}
}
@end
在.h文件中 对初始化方法进行声明即可
@interface BaseModal : NSObject
-(instancetype)initWith:(NSDictionary *)dic;
@end
试用这个基类时 只要实体类 继承这个类,且用-(instancetype)initWith:(NSDictionary *)dic这个方法来实例化对象即可。
相关文章推荐
- js
- jsp显示优酷视频
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- Javascript核心概述 - 深入了解javascript
- JS代码格式化修改表格的数值的格式
- javascript中window.open()与window.location.href的区别
- Jackson学习对象与JSON互相转化
- style、currentStyle、getComputedStyle区别介绍
- Fastjson序列化map时,保留map的进出栈顺序的方法
- js url参数的获取和设置以及删除
- 关于 CommonJS AMD CMD UMD
- web2.0之JSTL与EL
- Javascript 添加自定义静态方法属性JS清除左右空格
- javascript的奇怪的问题,鼠标点击偶数次触发事件,单数次不触发事件
- javascript学习笔记之DOM与表单
- ext js define
- Javascript定义类(class)的三种方法
- 【JavaScript 12—应用总结】:弹出登录框
- 【JavaScript 12—应用总结】:弹出登录框
- 表单使用get提交,问号传值问题