使用runtime json转model

2018-10-29  本文已影响0人  回传妙手

自己最近在学习runtime,希望在学习过程中做些记录,方便自己后来温习查阅。也希望能帮助到别的同学。

在你的model中直接使用以下方法

好了,直接上代码

-(instancetype)initWithDictionary:(NSDictionary *)dic

{

    if (self = [super init])

    {

        NSMutableArray *keys = [NSMutableArray array];

        unsigned int property_count;

        // 获取属性列表,注意入参

        objc_property_t *properties = class_copyPropertyList([self class], &property_count);

        for (int i = 0; i< property_count; i++)

        {

            objc_property_t property = properties[i];

            //通过property_getName 函数获取属性名字

            NSString *peopertyName = [NSString stringWithCString:property_getName(property) encoding:NSUTF8StringEncoding];

            [keys addObject:peopertyName];

        }

        //释放properties指向的内存

        free(properties);

        for (NSString *key in keys)

        {

            if ([dic valueForKey:key] == nil)

                continue;

            [self setValue:[dic valueForKey:key] forKey:key];

        }

    }

    return self;

}

代码很简单。

使用class_copyPropertyList()函数获取属性列表,入参为class和一个int数据的地址。代用该函数会修改这个int参数。可以通过property_getName 函数获取属性名字,通过property_getAttribute 函数获取属性。

上一篇下一篇

猜你喜欢

热点阅读