[iOS]KVC--鍵值編碼的方式賦值取值

KVC
除了常用的set/get方法取值賦值之外,還可以使用鍵值編碼的方式賦值取值
(說直接點,就是一個類,可以直接通過setValueForKey的方式賦值和取值)
iOS中我們每次聲明一個成員變量,一般使用@property的方式,該方式默認存在set和get方法,但除此之外,我們使用如下方法亦可:

類PoClass,有個成員變量name

@class Course;
@interface PoClass : NSObject
{
    NSString *name;
}
@end

如果name沒有@property

PoClass *po = [[PoClass alloc]init]

[po setValue:@"polen" forKey:@"name"];
NSString *getName = [po valueForKey:@"name"]

[po setValue:@"polenPath" forKeyPath:@"course.name"];
NSString *getName  = [po valueForKeyPath:@"course.name"];

key的方式和path的方式,可以理解為對setter和getter方式的補充。
如果有setter/getter方法,則優先會調用setter/getter方法,沒有則通過查看_key或者key的value.

參照推酷:

首先去檢查是否存在setter,getter方法,如果不存在,它將在內部查找名_key或key的實例變量。如果
還是沒有那就會報錯誤。通過KVC 可以獲取不存在getter方法的對象值,無需通過對象指針直接訪問。
【注意】:當我們通過setValue:forKey:設置對象的值,或者valueForKey:來獲取對象的值時,如果對象的實例變量為基本數據類型時(例如:char,int,float,BOOL),我們需要對這些數據類型進行封裝。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容