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

首頁 > 系統 > iOS > 正文

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

2019-10-21 18:44:56
字體:
來源:轉載
供稿:網友

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的使用方法,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黔西| 贡山| 新巴尔虎左旗| 乐至县| 鄂伦春自治旗| 买车| 伊金霍洛旗| 旺苍县| 奉化市| 永清县| 尤溪县| 屯昌县| 府谷县| 高雄县| 霍山县| 商河县| 凤阳县| 浦城县| 卫辉市| 东安县| 肥乡县| 六安市| 富源县| 辉南县| 中卫市| 南乐县| 乌审旗| 竹溪县| 长白| 元氏县| 永泰县| 报价| 保康县| 会昌县| 囊谦县| 东乡族自治县| 静海县| 枣阳市| 平利县| 时尚| 江山市|