IOS 开发KVC

kvc

    也就是key-value-coding,即键值编码,通常是用来给某一个对象的属性进行赋值.

用法:

    1.对私有变量进行赋值

    2.字典转模型

注意事项:

    1.字典转模型的时候,字典中的某一个key一定要在模型中有对应的属性

    2.如果一个模型中包含了另外的模型对象,是不能直接转化成功的。

    3.通过kvc转化模型中的模型,也是不能直接转化成功的。


Lock *lock = [[Lock alloc] init];

lock.name = smart_lock;

lock.password = 000000;

假如name是私有变量,就无法外部赋值,kvc可以做到,如下:

[lock setValue:@“smart_lock1” forKey:@"name"];

or

[lock setValue:@“smart_lock1” forKeyPath:@"name"];

区别呢?---》

LockBluetooth *bluetooth = [[LockBluetooth alloc] init];

lock.ble =  bluetooth ;

又是私有变量

[lock setValue:@"aa:bb:cc:dd:ee:ff" forKeyPath:@"ble.mac"];

    说明对某一个属性进行赋值,可以不用加下划线,而且它的查找规则应该是:先查找和直接写入的字符串相同的成员变量,如果找不到就找以下划线开头的成员变量。


    kvc除了访问私有变量这个用处外,还可以用于字典转模型。在Person类对外提供一个接口,将转模型的工作放在模型中进行

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

    if(self = [super init]) {

        [self setValuesForKeysWithDictionary:dict];

    }

    return self;

}

调用:

NSDictionary*PersonDict = @{@"name":@"smart_lock1",@"password":@"000000"}; Lock *lock1 = [Lock personWithDict:lock];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容