對於一般的屬性我們正常賦值方式
girl *normalgirl = [[girl alloc] init];
normalgirl.name = @"蒼老師"
; normalgirl.age = @"18"
; normalgirl.hobby = @"演戲"
;
取值
nslog(@"%@ %@ %@", normalgirl.name, normalgirl.age, normalgirl.hobby);
而kvc賦值方式有兩種,第一種是這樣的:
girl *kvcgirl = [[girl alloc] init];
[kvcgirl setvalue:@"愛妃"
forkey:@"name"];
[kvcgirl setvalue:@"20"
forkey:@"age"];
[kvcgirl setvalue:@"震動"
forkey:@"hobby"];
取值
nslog(@"
%@%@
%@",[kvcgirl valueforkey:@"name"], [kvcgirl valueforkey:@"age"], [kvcgirl valueforkey:@"hobby"]);
第二種是:
girl *dicgirl = [[girl alloc] init];
nsdictionary *dic = @;
[dicgirl setvaluesforkeyswithdictionary:dic];//通過字典賦值
nslog(@"%@", dicgirl);
[dicgirl release];
girl *errorgirl = [[girl alloc] init];
[errorgirl setvalue:@"貴妃" forkey:@"naem"];
nslog(@"%@", [errorgirl valueforkey:@"aeg"]);
你可能發現了這裡面最後兩行中的name,和age寫錯了,那麼問題來了,這就是我們使用kvc傳值的優點,如果你在類檔案中寫了下面的**,那麼把屬性名寫錯也沒事,他會幫你列印出來錯誤屬性名字
#pragma - kvc
//賦值遇見不能識別的key值
- (void)setvalue:(id)value forundefinedkey:(nsstring *)key
}//取值遇見不能識別的key值
- (id)valueforundefinedkey:(nsstring *)key
return
nil;
}
鍵值編碼 KVC 簡單的KVC
main.m kvc一 created by goddog on 15 1 3.1.我們可以通過setter和getter方法來設定和修改物件的屬性,同時也可以通過鍵值編碼 kvc 來操作物件屬性。2.何為kvc 以字串的形式間接的操作物件的屬性。設定值用 setvalue 屬性值 forkey 屬...
OC8 屬性 KVC是鍵值編碼
1.屬性,是oc提供的一種快速的模式化的建立例項變數的方式。1 屬性是通過 property標記的,2 屬性會在背後,默默的幫我們做set和get方法 2.屬性做的工作 1 建立乙個例項變數,名字是下劃線加屬性名,2 幫我們自動get和setter 的方式,建立一組方法,3.點語法,點語法是專門為了...
KVC 鍵值編碼與KVO鍵值監聽的應用(一)
1 鍵值編碼的基本概念和用法 鍵值編碼的基本概念 kvc是keyvalue coding的簡稱,它是一種可以直接通過字串的名字 key 來訪問類屬性的機制。使用該機制不需要呼叫訪問方法和變數例項就可以訪問物件屬性。本質上講,鍵 值編碼定義了你的程式訪問方法需要實現的樣式及方法簽名。在應用程式中實現鍵...