KVC 的作用

KVC(Key Value Coding)

1.主要作用:

1.KVC可以給對象的私有變量賦值(UIPageControl)

使用注意:

1>.設(shè)置key/keyPath位置的字符串必須保證有對應(yīng)的屬性(或者_(dá)屬性)

2>.setValue:forKey:和setValue:forKeyPath區(qū)別

keyPath可以根據(jù)內(nèi)部點(diǎn)語法,進(jìn)一步查找對應(yīng)的key

Person*p = [[Personalloc]init];

p.book= [[Bookalloc]init];

[psetValue:@"18"forKey:@"age”]; ? ? ? //不報錯

[psetValue:@"20"forKeyPath:@"age”];//不報錯

[psetValue:@"300"forKey:@"book.price”]; ? ? //報錯

[psetValue:@"300"forKeyPath:@"book.price”]; //不報錯

2.用于字典轉(zhuǎn)模型(MJExtension框架)

使用注意:

1>必須保證字典中對應(yīng)key在模型中能找到對應(yīng)的屬性

2>模型中的屬性可以在字典中沒有對應(yīng)的Key

3.通過KVC取出私有變量的值

4.模型對象轉(zhuǎn)字典(了解)

Person*p = [[Personalloc]init];

p.name=@"xiaobai";

p.age=1;

//_height為私有變量

NSDictionary*dict = [pdictionaryWithValuesForKeys:@[@"name",@"age",@"height"]];

2.KVC內(nèi)部實(shí)現(xiàn)

setValuesForKeysWithDictionary:底層實(shí)現(xiàn)

//便利字典當(dāng)中的所有Key Value值.給對應(yīng)的key,value賦值

[dictenumerateKeysAndObjectsUsingBlock:^(id _Nonnullkey,id _Nonnullobj,BOOL*_Nonnullstop) {

//給對應(yīng)的key,value賦值

[itemsetValue:objforKeyPath:key];

}];

setValue:forKeyPath:的底層實(shí)現(xiàn):

1.它會調(diào)?用這個屬性的set?方法.(可以在該方法中進(jìn)行值過濾)

2.如果沒有set?方法,它會去判斷有沒有跟key值同名的成員屬性.如果有,就直接賦 值,icon = obj.

3.如果沒有,那么它還會去判斷有沒有跟key值名相同帶有下劃線的成員屬性,如果有,就直接賦值,_icon = obj.

4.如果都沒有,就直接報錯.找不到對應(yīng)的成員屬性(setValue:forUndefinedKey:).

使用注意:

1>必須保證字典中對應(yīng)key在模型中能找到對應(yīng)的屬性

2>模型中的屬性可以在字典中沒有對應(yīng)的Key

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • KCV 其實(shí)由于ObjC的語言特性,你根部不必進(jìn)行任何操作就可以進(jìn)行屬性的動態(tài)讀寫,這種方式就是Key Value...
    TYM閱讀 1,065評論 0 4
  • 轉(zhuǎn)自:http://www.lxweimin.com/p/dd355fbfa029kvc不經(jīng)常使用,可能會忘記。轉(zhuǎn)載...
    BetterComingDay閱讀 691評論 0 1
  • 1 .KVC(Key Value Coding) 鍵值編碼方法,可以給屬性,甚至是私有屬性進(jìn)行賦值和取值,簡化字典...
    CoderGMQ閱讀 282評論 0 0
  • 已是秋天,天變得很藍(lán)很藍(lán),藍(lán)得讓人覺得很空曠很憂郁。 為了今天能夠順利簽約,妻子凌昨晚一直在修改合同方案,直到深夜...
    黎看雪閱讀 457評論 0 0
  • 每次選房間,或者大學(xué)宿舍選床位,我都選向陽的窗邊。這樣就無形中多了一項(xiàng)福利,每天早上陽光透過窗簾灑在臉上,每天早上...
    落蕉公子閱讀 440評論 0 7