KVC鍵值編碼

運行循環(runLoop) —自動釋放池滾動視圖丶(NSTimer)

>全稱是Key-Value coding即是鍵值編碼,它提供了一種使用字符串而不是訪問對象中的set方法去訪問一個對象屬性的機制;

> KVC是OC語言動態運行時機制(runTime)的一種體現,任何NSObject類型的對象都支持KVC

>常用核心方法:


//通過key(成員變量的名稱)

設置value(成員變量的值)

- (void)setValue:(id)valueforKey:(NSString*)key;


//通過key(成員變量的名稱)獲取value(成員變量的值)

- (id)valueForKey:(NSString*)key;


//通過鍵值對的形式給成員變量賦值

- (void)setValuesForKeysWithDictionary:(NSDictionary*)keyedValues;


//通過此方法防止出現未定義的key(成員變量的名稱)的時候出現崩潰

//一般情況下,使用KVC操作,推薦將方法重寫!!!(防止有及個別數據,是有其他字段)

- (void)setValue:(id)valueforUndefinedKey:(NSString*)key;


特殊字符處理:

@property(nonatomic,strong)NSString*description;

@property(nonatomic,strong)NSString*id;


方式一:

//重寫setvalue:forkey:方法

- (void)setValue:(id)valueforKey:(NSString*)key{

if([keyisEqual:@"description"]) {

//原本description屬性的改為desc

_desc = value;

}else{

[supersetValue:valueforKeyPath:key];

}

}


方式二:

//重寫setvalue:forUndefinedkey:方法

//另外一個好處,防止程序崩潰(某些字典中會多出一個值等問題)

- (void)setValue:(id)valueforUndefinedKey:(NSString*)key{

}

//在創建模型對象的時候,手動賦值

DataModel *model =

[[DataModel alloc] init];

//原本為description屬性改為desc

model.desc =

dict[@“description”];

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

推薦閱讀更多精彩內容