IOS中Key-Value Coding (KVC)的使用詳解(煙臺(tái)杰瑞教育IOS培訓(xùn)部原創(chuàng))_第1頁(yè)
IOS中Key-Value Coding (KVC)的使用詳解(煙臺(tái)杰瑞教育IOS培訓(xùn)部原創(chuàng))_第2頁(yè)
IOS中Key-Value Coding (KVC)的使用詳解(煙臺(tái)杰瑞教育IOS培訓(xùn)部原創(chuàng))_第3頁(yè)
IOS中Key-Value Coding (KVC)的使用詳解(煙臺(tái)杰瑞教育IOS培訓(xùn)部原創(chuàng))_第4頁(yè)
IOS中Key-Value Coding (KVC)的使用詳解(煙臺(tái)杰瑞教育IOS培訓(xùn)部原創(chuàng))_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論