首先在iOS开发中,很多时候我们都会用到字典->模型的事例,这里所说的模型 就是数据模型。
1. 字典转模型数据的过程:
1>首先我们先有一个plist文件,也就是数据存储的类型 将字典中的元素添加到plist文件中去
2 >接下来我们就应该创建我们需要的模型类,并在.h声明文件里设置属性和构造我们要用的方法 和plist加载的数据
1. 设置属性 构造方法
/* 1 字典实例化成员变量 2.字典实例化对象的类方法,又称为工厂方法*/
-(instancetype) initWithDict:(NSDictionary *)dict;
+(instancetype) ***WithDict:(NSDictionary *)dict;
// 从plist加载数据
+(NSArray *)XXX;// XXX一般都是和plist文件名字一样 便于明了
2.实现构造的方法
-(instancetype) initWithDict:(NSDictionary *)dict{
if (self == [super init]) {
// self.name = dict[@"name"];
// self.icon = dict[@"icon"];
// self.intro = dict[@"intro"]; (最基本的)
/* KVC (key value coding)键值编码
// 第一个参数是字典的数值 第二个参数是类的属性
[self setValue:dict[@"name"] forKey:@"name"];
[self setValue:dict[@"icon"] forKey:@"icon"];
[self setValue:dict[@"intro"] forKey:@"intro"];*/
//通过setValuesForKey方法来完成
[self setValuesForKeysWithDictionary:dict];
}
return self ;
}
+(instancetype) heroWithDict:(NSDictionary *)dict{
return [[self alloc]initWithDict:dict];
}
//plist数据交个模型处理数据
+(NSArray *)XXX{
//获得plist路径
NSString *path = [[NSBundle mainBundle]pathForResource:@"XXX.plist" ofType:nil];
NSArray *array = [NSArray arrayWithContentsOfFile:path];
//创建数组用于接收数据
NSMutableArray *tempArray = [NSMutableArray array];
//利用 for in 遍历数组的字典
for (NSDictionary *dict in array) {
//### 自己创建的类名字
// 创建模型对象并把他添加到数组中
[tempArray addObject:[### ***WithDict:dict]];
}
//这里返回的是包含plist文件里的模型数组
return tempArray;
}
3-> 然后就在我们的viewController 中添加数组的属性变量,然后 实行懒加载的方法把数据传递
@property(nonatomic,strong) NSArray *XXX;
//懒加载 数据
-(NSArray *)XXX{
if (_XXX == nil) {
_XXX = [### XXX];
}
return _XXX;
}
4-> 讲用到数组的地方转改为模型到这里 也就基本算完成了字典转模型的大致思路。### *hero = _XXX[indexPath.row];
// 这时候就能使用里面的属性模型值了
cell.imageView.image = [UIImage imageNamed:hero.icon];
字典转模型优缺点比较:
1.> 字典在使用key时候 用模型访问属性,若出现错误 编译器不会有提示错误的,但是 转换成模型后 就能提示 提高编码的速率
2.> 模型也就是我们说的数据模型,主要用于存放数据的对象,用模型表示数据显得我们更加专业(装逼 满分)