iOS:KVC的实践用法

KVC,即是指 [NSKeyValueCoding],一个非正式的 Protocol,提供一种机制来间接访问对象的属性。注意这里的间接一词,后面会讲道为什么是间接。
一个对象拥有某些属性。比如说,一个 Person 对象有一个 name 和一个 age 属性。以 KVC 说法,Person 对象分别有一个 value 对应他的 name 和 age 的 key。 key 只是一个字符串,它对应的值可以是任意类型的对象。从最基础的层次上看,KVC 有两个方法:一个是设置 key 的值,另一个是获取 key 的值。
直接上代码,可以复制过去运行一下看看:

- (UITextField *)textField {
    if (!_textField) {
        _textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 100, 200, 30)];
        _textField.placeholder = @"这是一个Demo";
        [self.view addSubview:self.textField];
    }
    return _textField;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    /**
     利用KVC调用隐藏的方法来做一些事情
    **/
    //利用KVC来修改placeholder的字体颜色
    [self.textField setValue:[UIColor redColor] forKeyPath:@"placeholderLabel.textColor"];
    //利用KVC来调用隐藏的方法来做count,max,min,sum
    NSMutableArray *array = [NSMutableArray new];
    PersonModel *person = [PersonModel new];
    person.age = 30;
    PersonModel *person1 = [PersonModel new];
    person1.age = 20;
    PersonModel *person2 = [PersonModel new];
    person2.age = 50;
    [array addObject:person];
    [array addObject:person1];
    [array addObject:person2];
    NSLog(@"%@",[array valueForKey:@"@count"]);
    NSLog(@"%@",[array valueForKeyPath:@"@max.age"]);
    NSLog(@"%@",[array valueForKeyPath:@"@min.age"]);
    NSLog(@"%@",[array valueForKeyPath:@"@sum.age"]);
}

运行结果如下:


image.png

何为间接?就是有些方法是隐藏的,没有暴露出来,通过KVC可以间接的去调用他们来完成一些事情,不需要自己去实现,比如这些基本的方法经常会用到。

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

推荐阅读更多精彩内容

  • KVC KVC定义 KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过K...
    暮年古稀ZC阅读 2,169评论 2 9
  • KVC KVC定义 KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过K...
    jackyshan阅读 51,946评论 9 200
  • 本文参考: KVC官方文档 KVC原理剖析 iOS KVC详解 KVC 简介 KVC全称是Key Value Co...
    拧发条鸟xds阅读 5,318评论 6 23
  • 在快速发展的互联网时代里,关于如何利用好我们的碎片化时间,应该很多朋友都尝试过自己的方法。最近我也学到一些有关这方...
    心诚则灵yue阅读 749评论 0 0
  • 坐在列车靠窗的位置,斜阳西下,纵贯南北的京九线西侧,太行山绵延不绝,在夕阳的余晖下勾勒出一条圆润起伏的弧线,...
    蓝潭星海阅读 585评论 0 5