版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、最新IOS中Key-Value Coding (KVC)的使用詳解(煙臺杰瑞教育IOS培訓(xùn)部原創(chuàng))IOS中Key-Value Coding (KVC)的使用詳解kvc,鍵值編碼,是一個非正式的協(xié)議,它提供一種機(jī)制來間接訪問對象的屬性。直接訪問對象是通過調(diào)用訪問器的方法實現(xiàn),而kvc不需要調(diào)用訪問器的設(shè)置和獲取方法,可以直接訪問對象的屬性。下面介紹一下kvc的用法:1、對屬性賦值kvc是通過鍵值對的方式對屬性設(shè)置值,提供了下面的方法,相當(dāng)于訪問器中的set方法。value為要設(shè)置的值,key是字符串,字符串中內(nèi)容為為屬性的名稱- (void)setValue:(id)value forKey:(
2、NSString *)key;- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;下面通過一個小例子講解一下通過訪問器和kvc對屬性賦值的代碼實現(xiàn)。假設(shè)Student類中有一個name屬性,直接對name賦值的方式為:Student *stu = Student alloc init; = jerehedu;通過kvo對name進(jìn)行賦值:Student *stu = Student alloc init;stu setValue:jerehedu forKey:name;假設(shè)學(xué)生類中還有一個屬性為ClassInfo
3、班級類的對象stuClass,在ClassInfo班級類中有個classNo班級號的屬性,下面通過直接的方式設(shè)置班級號:stu.stuClass = ClassInfo new; = 1;通過kvc設(shè)置班級號:stu.stuClass = ClassInfo new;stu setValue:(1) forKeyPath:stuClass.classNo;通過keyPath設(shè)置時,路徑由 xx.xx 表示;value的值為OC對象,如果為根本數(shù)據(jù)類型,需要進(jìn)行裝箱,也就是包裝為OC對象;2、獲取屬性的值kvc提供了獲取對象屬性值的方法,相當(dāng)于訪問器的get方法,取值的時候也是通過鍵值對方式。-
4、 (id)valueForKey:(NSString *)key;- (id)valueForKeyPath:(NSString *)keyPath;下面通過一個小例子講解一下通過訪問器和kvc對屬性取值的代碼實現(xiàn)。假設(shè)要獲取Student類中name的值,直接對name取值的方式為:NSString *name = ;通過kvc取值的方式為:NSString *name = stu valueForKey:name;通過訪問器方法直接從Student類中取班級號:int num = ;通過kvc取Student類中中班級號:int num = stu valueForKeyP
5、ath:stuClass.classNo intValue;默認(rèn)取到的值為OC對象,如果想得到根本數(shù)據(jù)類型,需要進(jìn)行拆箱操作。3、key找不到時,處理異常使用kvc時,如果代碼中的key值不存在,會拋出異常,可以在類中通過重寫它提供下面的這個方法來解決這個問題。- (void)setValue:(id)value forUndefinedKey:(NSString *)key;當(dāng)key不存在時,會自動調(diào)用上面的這個方法,可以在這個方法中進(jìn)行處理。4、kvc的用法補(bǔ)充kvc非常好用,可以簡化我們的代碼,除了可以不用通過訪問器方法,直接對屬性進(jìn)行訪問外,還可以對對象中的屬性進(jìn)行運(yùn)算。比方新添加一個
6、Test測試類,里面有一個score分?jǐn)?shù)的屬性,在Student類中有一個數(shù)組,數(shù)組中存放考試信息Test類對象,通過kvo可以直接得到數(shù)組中存儲的所有考試的平均成績、最好成績等。通過kvo存儲考試數(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類中將考試信息打印輸出: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ù)組中總成績SUMscore = %,self.testAry valueForKeyPath:sum.score ); NSLog(show2: 數(shù)組中平均成績AVGscore = %,self.testAry valueForKeyPath:avg.score ); NSLog(show2: 數(shù)組中最大成績MAXscore = %,sel
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保險代理居間合同委托書
- 服裝企業(yè)辦公大廈居間協(xié)議
- 液態(tài)化學(xué)試劑配送合同
- 2025年度工業(yè)控制系統(tǒng)安全工程師勞動合同
- 娛樂場所泔水運(yùn)輸合作協(xié)議
- 家具城配送服務(wù)合同模板
- 煤矸石清運(yùn)施工方案
- 綿陽市道路施工方案
- 完善教育評價體系:深化改革的策略與路徑探索
- 初中藏文版數(shù)學(xué)試卷
- 課題申報書:數(shù)智賦能高職院校思想政治理論課“金課”實踐路徑研究
- 公司安全生產(chǎn)事故隱患內(nèi)部報告獎勵工作制度
- H3CNE認(rèn)證考試題庫官網(wǎng)2022版
- 感統(tǒng)訓(xùn)練培訓(xùn)手冊(適合3-13歲兒童)
- 公司章程范本(完整版)
- 廠房委托經(jīng)營管理合同范本
- 《保險科技》課件-第二章 大數(shù)據(jù)及其在保險領(lǐng)域中的應(yīng)用
- 父母贈與田地協(xié)議書范本
- 中藥甘草課件
- 解讀國有企業(yè)管理人員處分條例(2024)課件(全文)
- 煙草企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化規(guī)范1-200題附有答案
評論
0/150
提交評論