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