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”];

你可能感兴趣的:(KVC键值编码)