iOS-KVC模式
全称是Key-value coding,翻译成键值编码。顾名思义,在某种程度上跟map的关系匪浅。它提供了一种使用字符串而不是访问器方法去访问一个对象实例变量的机制。
在iOS中定义模型一般使用如下带啊创建模型
#import "HMQuestion.h"@implementation HMQuestion-(instancetype)initWithDict:(NSDictionary *)dict
{
self = [super init];
if (self) {
//用KVC直接赋值plist所有的属性
[self setValuesForKeysWithDictionary:dict];
}
return self;
}+(instancetype)questionWithDict:(NSDictionary *)dict{
return [[self alloc] initWithDict:dict];
}+(NSArray *)questions{
NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"questions.plist" ofType:nil]];
NSMutableArray *arrayM = [NSMutableArray array];
for (NSDictionary *dict in array) {
[arrayM addObject:[self questionWithDict:dict]];
}
return arrayM;
}//对象描述方法,便于跟踪调试、建议:如果是自定义的模型,最好编写description方法
-(NSString *)description{
return [NSString stringWithFormat:@"<%@: %p> {answer:%@, icon:%@, title:%@, options:%@}",self.class,self,self.answer,self.icon,self.title,self.options];
}
@end
【iOS-KVC模式】用KVC 省去了对模型中单个变量逐一赋值,仅用一个语句即可实现所有属性的赋值,勘称Cocoa的大招
KVC 也可以直接通过字符串赋值,
// 用来间接获取或者修改对象属性的方式
// 使用KVC在获取数值时,如果指定对象不包含keyPath的”键名”,会自动进入对象的内部查找
// 如果取值的对象是一个数组,同样返回一个数组
推荐阅读
- --木木--|--木木-- 第二课作业#翼丰会(每日一淘6+1实战裂变被动引流# 6+1模式)
- 设计模式-代理模式-Proxy
- 【译】Rails|【译】Rails 5.0正式发布(Action Cable,API模式等)
- java静态代理模式
- VueX(Vuex|VueX(Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式)
- Kotlin基础(10)-代理模式在kotlin中的使用
- 长谈的确是这个时代需要的一种模式
- 《读_Head_First_有感》_“命令模式”
- 洗洗睡了|洗洗睡了 | 休息的时候,千万注意切换你的行为模式
- 设计模式【15】--从审批流中学习责任链模式