国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

IOS 中KVC的使用方法實例詳解

2020-07-26 02:42:52
字體:
來源:轉載
供稿:網友

IOS 中KVC的使用方法實例詳解

KVC是Key Value Coding的縮寫,意思是鍵值編碼。在iOS中,提供了一種方法通過使用屬性的名稱(也就是Key)來間接訪問對象的屬性方法。說的有的拗口,實際上就是通過類定義我們可以看到類的各種屬性,那么使用屬性的名稱我們就能訪問到類實例化后的對象的這個屬性值。

      這個方法可以不通過getter/setter方法來訪問對象的屬性。因為一個類的成員變量如果沒有提供getter/setter的話,外界就失去了對這個變量的訪問渠道。而KVC則提供了一種訪問的方法,這個在某些場合會很有威力。 

      不多說了,上代碼:

@interface myPerson : NSObject {   NSString *_name;   int   _age;   int   _height;   int   _weight; } @end 
@interface testViewController : UIViewController  @property (nonatomic, retain) myPerson *testPerson;  @end 
- (void)testKVC {   testPerson = [[myPerson alloc] init];      NSLog(@"testPerson's init height = %@", [testPerson valueForKey:@"height"]);   [testPerson setValue:[NSNumber numberWithInt:168] forKey:@"height"];   NSLog(@"testPerson's height = %@", [testPerson valueForKey:@"height"]); } 

        第一段代碼是定義了一個myPerson的類,這個類有一個_height的屬性,但是沒有提供任何getter/setter的訪問方法。同時在testViewController這個類里面有一個myPerson的對象指針。 

        當myPerson實例化后,常規來說是無法訪問這個對象的_height屬性的,不過通過KVC我們做到了,代碼就是testKVC這個函數。

        運行之后打印值就是: 

2013-11-02 11:16:21.970 test[408:c07] testPerson's init height = 02013-11-02 11:16:21.971 test[408:c07] testPerson's height = 168

    這就說明確實讀寫了_height屬性。 

    KVC的常用方法:

 - (id)valueForKey:(NSString *)key; - (void)setValue:(id)value forKey:(NSString *)key; 

    valueForKey的方法根據key的值讀取對象的屬性,setValue:forKey:是根據key的值來寫對象的屬性。 

    這里有幾個要強調一下

1. key的值必須正確,如果拼寫錯誤,會出現異常
2. 當key的值是沒有定義的,valueForUndefinedKey:這個方法會被調用,如果你自己寫了這個方法,key的值出錯就會調用到這里來
3. 因為類key反復嵌套,所以有個keyPath的概念,keyPath就是用.號來把一個一個key鏈接起來,這樣就可以根據這個路徑訪問下去
4. NSArray/NSSet等都支持KVC

 以上就是IOS KVC的使用方法,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 马山县| 广汉市| 沁阳市| 米泉市| 南投县| 邓州市| 清原| 汝州市| 白山市| 绿春县| 金湖县| 孟津县| 天峨县| 琼中| 宿州市| 襄樊市| 东乡县| 萝北县| 河东区| 甘德县| 仪陇县| 雷山县| 黎川县| 萨嘎县| 江西省| 杭锦旗| 富民县| 海南省| 大渡口区| 嘉善县| 庐江县| 松江区| 蛟河市| 任丘市| 伊宁县| 武陟县| 雅安市| 洛扎县| 天祝| 呈贡县| 耒阳市|