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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容