版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、最新IOS中Key-Value Coding (KVC)的使用詳解(煙臺(tái)杰瑞教育IOS培訓(xùn)部原創(chuàng))IOS中Key-Value Coding (KVC)的使用詳解kvc,鍵值編碼,是一個(gè)非正式的協(xié)議,它提供一種機(jī)制來(lái)間接訪問(wèn)對(duì)象的屬性。直接訪問(wèn)對(duì)象是通過(guò)調(diào)用訪問(wèn)器的方法實(shí)現(xiàn),而kvc不需要調(diào)用訪問(wèn)器的設(shè)置和獲取方法,可以直接訪問(wèn)對(duì)象的屬性。下面介紹一下kvc的用法:1、對(duì)屬性賦值kvc是通過(guò)鍵值對(duì)的方式對(duì)屬性設(shè)置值,提供了下面的方法,相當(dāng)于訪問(wèn)器中的set方法。value為要設(shè)置的值,key是字符串,字符串中內(nèi)容為為屬性的名稱(chēng)- (void)setValue:(id)value forKey:(
2、NSString *)key;- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;下面通過(guò)一個(gè)小例子講解一下通過(guò)訪問(wèn)器和kvc對(duì)屬性賦值的代碼實(shí)現(xiàn)。假設(shè)Student類(lèi)中有一個(gè)name屬性,直接對(duì)name賦值的方式為:Student *stu = Student alloc init; = jerehedu;通過(guò)kvo對(duì)name進(jìn)行賦值:Student *stu = Student alloc init;stu setValue:jerehedu forKey:name;假設(shè)學(xué)生類(lèi)中還有一個(gè)屬性為ClassInfo
3、班級(jí)類(lèi)的對(duì)象stuClass,在ClassInfo班級(jí)類(lèi)中有個(gè)classNo班級(jí)號(hào)的屬性,下面通過(guò)直接的方式設(shè)置班級(jí)號(hào):stu.stuClass = ClassInfo new; = 1;通過(guò)kvc設(shè)置班級(jí)號(hào):stu.stuClass = ClassInfo new;stu setValue:(1) forKeyPath:stuClass.classNo;通過(guò)keyPath設(shè)置時(shí),路徑由 xx.xx 表示;value的值為OC對(duì)象,如果為根本數(shù)據(jù)類(lèi)型,需要進(jìn)行裝箱,也就是包裝為OC對(duì)象;2、獲取屬性的值kvc提供了獲取對(duì)象屬性值的方法,相當(dāng)于訪問(wèn)器的get方法,取值的時(shí)候也是通過(guò)鍵值對(duì)方式。-
4、 (id)valueForKey:(NSString *)key;- (id)valueForKeyPath:(NSString *)keyPath;下面通過(guò)一個(gè)小例子講解一下通過(guò)訪問(wèn)器和kvc對(duì)屬性取值的代碼實(shí)現(xiàn)。假設(shè)要獲取Student類(lèi)中name的值,直接對(duì)name取值的方式為:NSString *name = ;通過(guò)kvc取值的方式為:NSString *name = stu valueForKey:name;通過(guò)訪問(wèn)器方法直接從Student類(lèi)中取班級(jí)號(hào):int num = ;通過(guò)kvc取Student類(lèi)中中班級(jí)號(hào):int num = stu valueForKeyP
5、ath:stuClass.classNo intValue;默認(rèn)取到的值為OC對(duì)象,如果想得到根本數(shù)據(jù)類(lèi)型,需要進(jìn)行拆箱操作。3、key找不到時(shí),處理異常使用kvc時(shí),如果代碼中的key值不存在,會(huì)拋出異常,可以在類(lèi)中通過(guò)重寫(xiě)它提供下面的這個(gè)方法來(lái)解決這個(gè)問(wèn)題。- (void)setValue:(id)value forUndefinedKey:(NSString *)key;當(dāng)key不存在時(shí),會(huì)自動(dòng)調(diào)用上面的這個(gè)方法,可以在這個(gè)方法中進(jìn)行處理。4、kvc的用法補(bǔ)充kvc非常好用,可以簡(jiǎn)化我們的代碼,除了可以不用通過(guò)訪問(wèn)器方法,直接對(duì)屬性進(jìn)行訪問(wèn)外,還可以對(duì)對(duì)象中的屬性進(jìn)行運(yùn)算。比方新添加一個(gè)
6、Test測(cè)試類(lèi),里面有一個(gè)score分?jǐn)?shù)的屬性,在Student類(lèi)中有一個(gè)數(shù)組,數(shù)組中存放考試信息Test類(lèi)對(duì)象,通過(guò)kvo可以直接得到數(shù)組中存儲(chǔ)的所有考試的平均成績(jī)、最好成績(jī)等。通過(guò)kvo存儲(chǔ)考試數(shù)組信息: NSMutableArray *ary = NSMutableArray array; for (int i=0; i5; i+) Test *test = Test alloc init; test setValue:(100-10*i) forKey:score; ary addObject:test; stu.testAry = ary;在Student類(lèi)中將考試信息打印輸出:NS
7、Log(show: testAry = % ,self valueForKey:testAry); NSLog(show: testAry.score = %,self.testAry valueForKey:score ); NSLog(show: testAry.score = %,self.testAry valueForKeyPath:score ); NSLog(show: 數(shù)組中總成績(jī)SUMscore = %,self.testAry valueForKeyPath:sum.score ); NSLog(show2: 數(shù)組中平均成績(jī)AVGscore = %,self.testAry valueForKeyPath:avg.score ); NSLog(show2: 數(shù)組中最大成績(jī)MAXscore = %,sel
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院《試驗(yàn)設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 中國(guó)民航大學(xué)《高等高分子化學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)學(xué)校網(wǎng)絡(luò)文明傳播志愿者考評(píng)細(xì)則及獎(jiǎng)懲制度
- 浙江財(cái)經(jīng)大學(xué)《電子科學(xué)與技術(shù)學(xué)科前沿與進(jìn)展》2023-2024學(xué)年第一學(xué)期期末試卷
- 張家口學(xué)院《新醫(yī)療技術(shù)與法》2023-2024學(xué)年第一學(xué)期期末試卷
- 缺陷分析與質(zhì)量改進(jìn)流程規(guī)范
- 五年級(jí)列方程應(yīng)用題100道(有答案)
- 雙11房產(chǎn)銷(xiāo)售策略模板
- 生物研究月報(bào)模板
- 新蘇教版一年級(jí)數(shù)學(xué)下冊(cè)第二單元《圖形的初步認(rèn)識(shí)(二)》全部教案(共3課時(shí))
- 初級(jí)經(jīng)濟(jì)師考試經(jīng)濟(jì)基礎(chǔ)知識(shí)講義
- 八年級(jí)上冊(cè)英語(yǔ)完形填空、閱讀理解100題含參考答案
- 2023年安徽省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 小學(xué)數(shù)學(xué)教學(xué)3000字(優(yōu)選11篇)
- 四川水泥廠土建工程基礎(chǔ)施工方案
- 新外研版高二英語(yǔ)選擇性必修二Unit2重點(diǎn)單詞短語(yǔ)歸納復(fù)習(xí)檢測(cè)(精編課件)
- 圍棋初級(jí)死活常型
- GB/T 6481-2002鑿巖用錐體連接中空六角形釬桿
- GB/T 20988-2007信息安全技術(shù)信息系統(tǒng)災(zāi)難恢復(fù)規(guī)范
- (最新)信息科技風(fēng)險(xiǎn)管理辦法
- 托福閱讀小班講義
評(píng)論
0/150
提交評(píng)論