KVC

关于kvc,在苹果开发文档中有详细的介绍:About Key-Value Coding

都知道面向对象编程的三个特征:封装继承多态。其中封装就是将一个东西的特点、行为封装起来,向外界暴露出一定的接口,外界只能通过这些接口来使用、调配这个东西。但是很多时候我们又需要直接去访问这个东西的一些特点,比如Person类又name、age、weight、gender、profession等等属性,我们从一个表格中获取到了这样一个数据:

dict = {@"name":@"Zhang Xiao Ming", @"age":@"18", @"weight":@"120", @"profession":@"student"}

如果我们需要将这个数据变成一个Person对象,那就需要实例化一个Person,比如xiaoming,然后这样写

xiaoming.name = dict[@"name"];
xiaoming.age = dict[@"age"];
xiaoming.weight = dict[@"weight"];
xiaoming.profession = dict[@"profession];
...// 等等等

如果Person有100个属性,就得写一百行这样的代码,而且如果某一个属性的名字变了,这些代码就得跟着改变,于是出现了kvc,它就是为了弥补只能通过对象暴露出的接口访问属性的一个缺陷(人们总是在制定规则-打破规则)。
kvc的一般用法:

    NSError* error;
    NSString* name = @"John";
    if ([person validateValue:&name forKey:@"name" error:&error]) {
        [person setValue:name forKey:@"name"];
    }

当然,还有好多用法和注意事项,这里没有写出来,敬请期待。。。

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

推荐阅读更多精彩内容