IOS 開發KVC

kvc

????也就是key-value-coding,即鍵值編碼,通常是用來給某一個對象的屬性進行賦值.

用法:

????1.對私有變量進行賦值

????2.字典轉模型

注意事項:

????1.字典轉模型的時候,字典中的某一個key一定要在模型中有對應的屬性

????2.如果一個模型中包含了另外的模型對象,是不能直接轉化成功的。

????3.通過kvc轉化模型中的模型,也是不能直接轉化成功的。


Lock *lock = [[Lock alloc] init];

lock.name = smart_lock;

lock.password = 000000;

假如name是私有變量,就無法外部賦值,kvc可以做到,如下:

[lock setValue:@“smart_lock1” forKey:@"name"];

or

[lock setValue:@“smart_lock1” forKeyPath:@"name"];

區別呢?---》

LockBluetooth *bluetooth = [[LockBluetooth?alloc] init];

lock.ble =??bluetooth?;

又是私有變量

[lock setValue:@"aa:bb:cc:dd:ee:ff"?forKeyPath:@"ble.mac"];

????說明對某一個屬性進行賦值,可以不用加下劃線,而且它的查找規則應該是:先查找和直接寫入的字符串相同的成員變量,如果找不到就找以下劃線開頭的成員變量。


????kvc除了訪問私有變量這個用處外,還可以用于字典轉模型。在Person類對外提供一個接口,將轉模型的工作放在模型中進行

- (instancetype)initWithDict:(NSDictionary*)dict{

????if(self = [super init]) {

????????[self setValuesForKeysWithDictionary:dict];

????}

????return self;

}

調用:

NSDictionary*PersonDict = @{@"name":@"smart_lock1",@"password":@"000000"}; Lock *lock1 = [Lock personWithDict:lock];

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

推薦閱讀更多精彩內容