Oc KVC 鍵值編碼

2021-07-08 10:55:44 字數 1889 閱讀 5657

是一種間接地訪問物件例項變數的機制

通過setvalue: forkey :間接地為物件的例項變數做賦值

通過valueforkey:間接地取到物件的例項變數

首先定義兩個類person類 和phone類

//1.先檢查有沒有name這個例項變數

//2.如果沒有,會檢查同名的帶_的例項變數

//3.如果還沒有,會自動呼叫setvalueforundefinedkey:這個方法

person *per = [[person alloc] init];

[per setvalue:@"shuai" forkey:@"na"];

//1.先檢查有沒有name這個例項變數

//2.如果沒有,檢查有沒有同名帶_的例項變數

//3.如果沒有,就會自動呼叫valueundefinedkey:這個方法

nslog(@"%@",[per valueforkey:@"name1"]);

[per setvalue:@18 forkey:@"age"];

nslog(@"%@",[per valueforkey:@"age"]);

phone *phone = [[phone alloc] init];

//[phone setvalue:@"ipone" forkey:@"brand"];

[per setvalue:phone forkey:@"phone"];

nslog(@"%@",[per valueforkey:@"phone"]);

// nslog(@"%@",[phone valueforkey:@"brand"]);

//通過per為手機的品牌名賦值

//setvalueforkeypath

//給人的手機下地品牌賦值

[per setvalue:@"huawei" forkeypath:@"phone.brand"];

nslog(@"%@",[phone valueforkey:@"brand"]);

nslog(@"%@",[per valueforkeypath:@"phone.brand"]);

// setvaluesforkeyswithdictionary:<#(nsdictionary *)#>

// insert code here...

nslog(@"hello, world!");

//使用陣列管理圖書

nsmutablearray *bookarr = [[nsmutablearray alloc] initwithcapacity:1];

book *book1 = [[book alloc] initwithname:@"三國演義" price:20];

book *book2 = [[book alloc]initwithname:@"西遊記" price:18];

book *book3 = [[book alloc ] initwithname:@"水滸傳" price:21];

book *book4 = [[book alloc] initwithname:@"紅樓夢" price:25];

//tianjia

[bookarr addobject:book1];

[bookarr addobject: book2];

[bookarr addobject:book3];

賦值時key 不存在時會自動呼叫該方法

//防止kvc賦值時,由於key不存在導致崩潰,通常用於錯誤處理

- (void) setvalue:(id)value forundefinedkey:(nsstring *)key 

KeyValueCoding 鍵值編碼

void btnclick uibutton btn if btn.tag 100 修改 teacher 的變數 else 修改 student 的變數 sm setvalue xiaoxin forkey name 給成員變數賦值 void setvalues sm studentmodel al...

鍵值編碼KVC

許多程式設計技術都基於間接機制,包括整個物件導向程式設計領域。本章將介紹另一種間接機制,這種機制不屬於obj c語言的特性,而是cocoa提供的一種特性。我們知道在c 中可以通過反射讀寫乙個物件的屬性,有時候這種方式特別方便,因為你可以利用字串的方式去動態控制乙個物件。其實由於objc的語言特性,你...

鍵 值編碼擴充套件

coreanimation擴充套件了nskeyvaluecoding協議,因為它從屬caanimation和calayer類。此擴充套件為某些鍵新增預設值,擴充套件封裝約定,為cgpoint cgrect cgsize catransform3d新增鍵路徑支援 鍵 值編碼遵從容器類caanimati...