如果我們的物件需要使用KVC,必須符合object-c的非正式協議NSKeyValueCoding.我們可以簡單的來理解KVC,即所有符合KVC機制的物件都看成一個字典(NSDictionary),物件裡面的成員量都是以鍵值配對的形式存放的,當我們需要為物件存值時,使用“setValue: froKey:”的方法;而當取物件時,使用valueForKey:的方法。
對於物件中成員量的鍵值配對,所謂的“鍵”其實是NSString型別的字串,他們所對應的值也都是一個id型別的物件。
定義一個足球運動員類
@interface footballer : NSObject @property (nonatomic,retain) NSString *name; //@property (nonatomic,retain) NSMutableArray *members; @end @implementation footballer @synthesize name;
//@synthesize members;
注:程式中通過@synthesize指令告訴編譯器在編譯期間產生getter /setter方法
對於足球運動員的物件,我們如果要知道他的名字,就可以將name作為鍵來取值,程式碼如下:
footballer *aPlayer=[[footballer alloc]init]; aPlayer.name=@"Rual";
//footballer *bPlayer=[[footballer alloc]init];
//[bplayer.members addObject:aPlayer.name]; NSLog(@"name: %@",[aPlayer valueForKey:@"name"]);