KVC

作者: Nulll | 来源:发表于2021-02-20 14:09 被阅读0次

    1、KVC 常用的几个API

    -(void)setValue:(id)value forKeyPath:(NSString *)keyPath;
    -(void)setValue:(id)value forKey:(NSString *)key;
    -(id)valueForKeyPath:(NSString *)keyPath;
    -(id)valueForKey:(NSString *)key;
    

    setValue:forKey: 该方法只会取出一层的值,
    setValue:forKeyPath:可以取出多层值。

    2、用处

    //利用KVC 可以修改很多系统没有暴露出来的属性(成员变量)。
    //利用KVC 也可以出发KVO。
    //利用KVC 和 runtime 可以自定义一个字典和模型的转化。
    ......

    3、列子

    #import <Foundation/Foundation.h>
    #import "GoodsDetailModel.h"
    @interface GoodsModel : NSObject
    /*** 图片url ****/
    @property(nonatomic,copy) NSString *imageUrl;
    /*** 商品详情 ****/
    @property(nonatomic,strong) GoodsDetailModel *model;
    @end
    
    @interface GoodsDetailModel : NSObject
    /*** 商品描述 ****/
    @property(nonatomic,copy) NSString *goodsDetail;
    @end
    
    GoodsModel *model = [[GoodsModel alloc]init];
    [model setValue:@"https://www.jianshu.com/p/be23b5e46e07" forKey:@"imageUrl"];
    [model setValue:@"https://www.jianshu.com/p/be23b5e46e07" forKeyPath:@"imageUrl"];
    //这里都会设置成功
    
    model.model = [[GoodsDetailModel alloc]init];
    [model.model setValue:@"商品描述" forKey:@"goodsDetail"];
    [model.model setValue:@"商品描述" forKeyPath:@"model.goodsDetail"];
    // 这里只有第二个会成功
    

    4、

    赋值和取值原理

    相关文章

      网友评论

          本文标题:KVC

          本文链接:https://www.haomeiwen.com/subject/kkpqgktx.html