-
解析Plist文件
(arrayWithContentsOfFile... )
@property (nonatomic ,strong) NSArray *carData;
-(NSArray *)carData{
if(_carData == nil){
//arrayWithContentsOfFile - 根据文件的地址,获取文件内容,返回Array
//mainBundle - 软件安装包路径.
//pathForResource - 查询"cars.plist"文件的路径,返回NSString
NSArray *groupArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"cars.plist" ofType:nil]];
//字典-->模型
NSMutableArray *carDataTemp = [NSMutableArray array];
for (NSDictionary *groupDict in groupArray ) { // 字典 -->模型
CarGroup *carGroup = [CarGroup carGroupWithDict:groupDict];
[carDataTemp addObject: carGroup];
}
self.carData = carDataTemp;
}
return _carData;
}
/*
字典-->模型
//KVC方式赋值,会将dict[@"cars"]转换为数组,需求是转换为'模型-Car'的数组
[carGroup setValuesForKeysWithDictionary:dict];
字典-->'模型'数组
取出字典中数组,转换为模型,存放在可变数组里.
*/
+(instancetype)carGroupWithDict:(NSDictionary *)dict{
CarGroup *carGroup = [[self alloc]init];
carGroup.headInfo = dict[@"header"];
carGroup.endInfo = dict[@"footer"];
//字典-->'模型'数组
NSMutableArray * array = [NSMutableArray array];
for (NSDictionary* carDict in dict[@"cars"]) { //嵌套类型,再次字典 -->模型
Car *carInfo = [Car carWithIcon:carDict[@"icon"] name:carDict[@"name"]];
[array addObject:carInfo];
}
carGroup.cars = array;
return carGroup;
}