国产探花免费观看_亚洲丰满少妇自慰呻吟_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的使用方法,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘洛县| 四川省| 石城县| 宜春市| 成武县| 镶黄旗| 繁昌县| 永胜县| 桂平市| 永兴县| 格尔木市| 墨竹工卡县| 吉木乃县| 西林县| 德兴市| 南宫市| 静安区| 固安县| 崇义县| 金坛市| 梧州市| 同江市| 乌鲁木齐县| 城步| 北票市| 驻马店市| 保靖县| 汝南县| 洛宁县| 光山县| 仲巴县| 长沙县| 兴仁县| 毕节市| 元谋县| 黄大仙区| 吕梁市| 利津县| 凉城县| 西峡县| 淮滨县|