Plist文件的使用-嵌套的字典转模型

Plist文件的使用-嵌套的字典转模型_第1张图片
Plist文件和对应代码分析
  • 解析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;
}

你可能感兴趣的:(Plist文件的使用-嵌套的字典转模型)