一蚜枢、簡(jiǎn)介
NSKeyValueCoding非正式協(xié)議(分類): 規(guī)定了允許了App通過key(name)值來間接的訪問一個(gè)對(duì)象的屬性和成員變量(不管是私有還是公共的),而不是直接調(diào)getter&setter方法或者實(shí)例變量
閱讀文檔:
1. 學(xué)習(xí)如何在App中使用鍵值編碼
2. 如何使你的類與其他的技術(shù)進(jìn)行交互. KVC是KVO、綁定袱耽、CoreData和蘋果腳本的基礎(chǔ)瀑梗。
二枢冤、文檔架構(gòu)
KVC包含如下文檔:
1. 什么是KVC:KVC概述
2. KVC術(shù)語(yǔ):被用于引用對(duì)象屬性的通用的術(shù)語(yǔ)
3. KVC基礎(chǔ):描述使用KVC的基本規(guī)則
4. KVC的Getter&Setter方法:被用于引用對(duì)象屬性的通用的術(shù)語(yǔ)
5. 鍵值校驗(yàn):如何實(shí)現(xiàn)屬性校驗(yàn)
6. KVC實(shí)現(xiàn)順序:描述一個(gè)類KVC的實(shí)現(xiàn)順序
7. 支持標(biāo)量和結(jié)構(gòu)體:描述KVC支持的數(shù)據(jù)類型
8. 集合操作:列舉集合操作,并描述它們的使用
9. 訪問搜索實(shí)現(xiàn)細(xì)節(jié):解釋如何適當(dāng)?shù)臎Q定getter&setter方法或者實(shí)例變量
10. 描述屬性關(guān)系:使用元數(shù)據(jù)定義對(duì)象與它們的屬性之間的關(guān)系
11. 性能方面的考慮:被用于引用對(duì)象屬性的通用的術(shù)語(yǔ)
三歹颓、方法體驗(yàn)
*- (nullable id)valueForKeyPath:(NSString )keyPath; // 根據(jù)鍵路徑獲取值
*- (void)setValue:(nullable id)value forKeyPath:(NSString )keyPath; // 根據(jù)鍵路徑設(shè)置值
*- (nullable id)valueForKey:(NSString )key; // 根據(jù)鍵獲取值
*- (void)setValue:(nullable id)value forKey:(NSString )key; // 根據(jù)鍵獲取值
TGPerson *p = [[TGPerson alloc]init];
[p setValue:@"10086" forKeyPath:@"age"]; // setter --> _age --> age
[p setValue:@"tang" forKeyPath:@"stuNum"];
[p setValue:@(1) forKeyPath:@"name"];// 訪問真私有屬性,注意數(shù)據(jù)類型的變化。
//[p setValue:@"男" forKeyPath:@"sex"]; // 訪問私有屬性
NSLog(@"%@",[p valueForKeyPath:@"name"]);
四油湖、問題剖析
1. Value的類型巍扛?
任意對(duì)象。設(shè)置什么類型乏德,值就是什么類型的撤奸。
2. KVC的執(zhí)行原理?
setter&getter - _(key) - key喊括。
3. 明確KVC能夠訪問所有的屬性和成員變量胧瓜。
五、遺留問題
key與keyPath的區(qū)別郑什?下次解答喲府喳,小伙伴們可以看看喲
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者