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

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論