除了一般的賦值和取值的方法,我們還可以用Key-Value-Coding(KVC)鍵值編碼來訪問你要存取的類的屬性。
下圖來自蘋果官網:
如何使用KVC存取對象屬性呢?看個示例
1、使用KVC
定義一個Student類,繼承於NSObject。
.h文件
.m文件
.m文件也沒有實現。name屬性沒有加property,原來的訪問方法就訪問不了name屬性了。怎麼辦呢?用kvc就可以了
打印結果:
2012-07-20 15:04:09.920 objectiveC[1977:403] 學生姓名:張三
張三 這個值存進去了,通過valueForKey取出來了。
如果存的時候key和類屬性的名稱不一致會怎麼樣呢?
代碼改成
[student setValue:@"張三" forKey:@"name1"];
運行,程序崩潰 ,打印:
2012-07-20 15:09:40.432 objectiveC[2069:403] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<Student 0x106f14270> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key name1.'
提示沒有這個name1 這個key。