实现字典和模型的自动转换(MJExtension)

- (instancetype)initWithDict:(NSDictionary *)dict {

    if (self = [super init]) {
        //(1)获取类的属性及属性对应的类型
        NSMutableArray * keys = [NSMutableArray array];

        unsigned int outCount;
        objc_property_t * properties = class_copyPropertyList([self class], &outCount);
        for (int i = 0; i < outCount; i ++) {
            objc_property_t property = properties[i];
            //通过property_getName函数获得属性的名字
            NSString * propertyName = [NSString stringWithCString:property_getName(property) encoding:NSUTF8StringEncoding];
            [keys addObject:propertyName];
        }
        //立即释放properties指向的内存
        free(properties);

        //(2)根据类型给属性赋值
        for (NSString * key in keys) {
            if ([dict valueForKey:key] == nil) continue;
            [self setValue:[dict valueForKey:key] forKey:key];
        }
    }
    return self;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ​ 01 刚参加工作那年,去了一个陌生的城市。 报道第二天,银行来电,需要公司送一份盖章的文件过去,必须两小时内送...
    凌心阅读 482评论 0 0
  • 95加厚款熊猫不倒翁已经帮亲充气测试了。
    谷亨井阅读 232评论 0 2
  • 津门之旅 “京油子,卫嘴子,保定的跑腿子”,到达天津就从导游嘴里听到了这句顺口溜,非常有趣了。这个八九十岁的老奶奶...
    阿章_阅读 188评论 0 2
  • 亲吻弗洛伦萨的每一个穹顶,感受意大利人的热情奔放,感觉被全世界温柔相待 弗洛伦萨的街头画家,看起来也很有feel ...
    屎球子阅读 179评论 1 5