iOS:KVC的實(shí)踐用法

KVC,即是指 [NSKeyValueCoding],一個非正式的 Protocol,提供一種機(jī)制來間接訪問對象的屬性。注意這里的間接一詞,后面會講道為什么是間接。
一個對象擁有某些屬性。比如說,一個 Person 對象有一個 name 和一個 age 屬性。以 KVC 說法,Person 對象分別有一個 value 對應(yīng)他的 name 和 age 的 key。 key 只是一個字符串,它對應(yīng)的值可以是任意類型的對象。從最基礎(chǔ)的層次上看,KVC 有兩個方法:一個是設(shè)置 key 的值,另一個是獲取 key 的值。
直接上代碼,可以復(fù)制過去運(yùn)行一下看看:

- (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調(diào)用隱藏的方法來做一些事情
    **/
    //利用KVC來修改placeholder的字體顏色
    [self.textField setValue:[UIColor redColor] forKeyPath:@"placeholderLabel.textColor"];
    //利用KVC來調(diào)用隱藏的方法來做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"]);
}

運(yùn)行結(jié)果如下:


image.png

何為間接?就是有些方法是隱藏的,沒有暴露出來,通過KVC可以間接的去調(diào)用他們來完成一些事情,不需要自己去實(shí)現(xiàn),比如這些基本的方法經(jīng)常會用到。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • KVC KVC定義 KVC(Key-value coding)鍵值編碼,就是指iOS的開發(fā)中,可以允許開發(fā)者通過K...
    暮年古稀ZC閱讀 2,291評論 2 9
  • KVC KVC定義 KVC(Key-value coding)鍵值編碼,就是指iOS的開發(fā)中,可以允許開發(fā)者通過K...
    jackyshan閱讀 52,313評論 9 198
  • 本文參考: KVC官方文檔 KVC原理剖析 iOS KVC詳解 KVC 簡介 KVC全稱是Key Value Co...
    擰發(fā)條鳥xds閱讀 5,445評論 6 23
  • 在快速發(fā)展的互聯(lián)網(wǎng)時(shí)代里,關(guān)于如何利用好我們的碎片化時(shí)間,應(yīng)該很多朋友都嘗試過自己的方法。最近我也學(xué)到一些有關(guān)這方...
    心誠則靈yue閱讀 812評論 0 0
  • 坐在列車靠窗的位置,斜陽西下,縱貫?zāi)媳钡木┚啪€西側(cè),太行山綿延不絕,在夕陽的余暉下勾勒出一條圓潤起伏的弧線,...
    藍(lán)潭星海閱讀 711評論 0 5

友情鏈接更多精彩內(nèi)容