运行时使用之获取属性、字典转模型

运行时使用之获取属性、字典转模型_第1张图片
Apple.jpg
  • 需求驱动开发
  • 模型中实现字典转模型 --> 获取模型的属性 (运行时方法)

1.获取属性列表
2.取出objc_property_t数组中的property
3.获取的是C语言的名称
4.将C语言的字符串转成OC的
5.添加到属性数组中

  • 注意点:
    1.使用类方法
    2.C语言中,用完copy,create的东西之后,最好释放
+ (NSArray *)properties{
    unsigned int count;
    /*
        1.获取属性列表
        参数1:获取哪个类的
        参数2:count表示你该类里面有多少个属性
     
        propertyList 它就相当于一个数组
     
        数组里面就装着 .h 文件中的 @property (nonatomic, copy) NSString *title;,@property (nonatomic, copy) NSString *digest;...
     */
    objc_property_t *propertyList = class_copyPropertyList([self class], &count);
    
    //定义OC的属性数组
    NSMutableArray *ocProperties = [NSMutableArray array];
    for (int i=0; i
  • 转模型的方法
+ (instancetype)newsWithDict:(NSDictionary *)dict{
    id obj = [[self alloc] init];
    
    NSArray *properties = [self properties];
    for (NSString *property in properties) {
        if (dict[property]!=nil) {
            //KVC赋值
            [obj setValue:dict[property] forKey:property];
        }
    }
    
    return obj;
}
  • 小结:
    有了这两个方法就可以轻松的把后台返回的接口数据转化了,相比用第三方,自己来写也并不费力~~第三方优点是对层次结构比较深的转字典转模型也好用.

你可能感兴趣的:(运行时使用之获取属性、字典转模型)