iOS开发中,经常会用到字典转模型,咱们平常常用的是MJExstend框架,该框架功能完善,但是在咱们用的时候基本上只是在数据解析的时候会用到json字典转模型,仅此一个功能,你们庞大的一套框架,是不是有些浪费啦,所以咱们自己写一个小的分类,运用<objc/runtime.h>一点点知识点就可以搞定,下面直接上代码:该分类有三个功能:(1)字典 转 模型;(2)模型 转字符串;(3)模型 转 字典。
#import <Foundation/Foundation.h>
@interface NSObject (ZJExtend)
+(instancetype)modelWithJson:(NSDictionary *)json;
-(NSDictionary *)objClassInPropertyName;
-(NSString *)toString;
-(NSDictionary*)toDictionary;
@end
#import "NSObject+ZJExtend.h"
#import <objc/runtime.h>
@implementation NSObject (ZJExtend)
/** 属性名称里内存放的类型
* @{@"propertyName":@"Class"} 即属性名称:存放类型
*/
-(NSDictionary *)objClassInPropertyName{
return [NSDictionary dictionary];
}
+(instancetype)modelWithJson:(NSDictionary *)json{
id model = [[self alloc] init];
if (model && [json isKindOfClass:[NSDictionary class]]){
// 遍历所有属性 采用KVO赋值
unsigned int count;
objc_property_t *properties = class_copyPropertyList([model class], &count);
for(int i=0;i<count;i++){
objc_property_t property = properties[i];
const char * name = property_getName(property);
NSString * propertyName = [NSString stringWithCSt