UI08-省市区 -模型嵌套

ViewController.m

#import "ViewController.h"
#import "Province.h"
#import "City.h"
#import "Area.h"

@interface ViewController ()
//存对象的array
@property (nonatomic,retain)NSMutableArray *provinceArray;

@end

@implementation ViewController
-(void)getData{
    
    self.provinceArray = [NSMutableArray array];
    //存字典的array
    NSMutableArray *provinceArray = [NSMutableArray array];
    NSString *contentString = [NSString stringWithContentsOfFile:@"/Users/lanou3g/Desktop/实训/UI08-省市区 -模型嵌套/UI08-省市区 -模型嵌套/area.txt" encoding:NSUTF8StringEncoding error:nil];
    //NSLog(@"%@",contentString);
    NSArray *lineArray = [contentString componentsSeparatedByString:@"\n"];
    
    for (NSString *lineString in lineArray) {
        if (![lineString hasPrefix:@" "]) {
            NSMutableDictionary *provinceDic = [NSMutableDictionary dictionary];
            [provinceDic setObject:lineString forKey:@"provinceName"];
            NSMutableArray *cityArray = [NSMutableArray array];
            [provinceDic setObject:cityArray forKey:@"cityArray"];
            [provinceArray addObject:provinceDic];
            
        }else if (![lineString hasPrefix:@"    "]){
            NSMutableDictionary *provinceDic = [provinceArray lastObject];
            NSMutableArray *cityArray = [provinceDic objectForKey:@"cityArray"];
            NSMutableDictionary *cityDic = [NSMutableDictionary dictionary];
            [cityDic setObject:lineString forKey:@"cityName"];
            NSMutableArray *areaArray = [NSMutableArray array];
            [cityDic setObject:areaArray forKey:@"areaArray"];
            [cityArray addObject:cityDic];
            
        }else{
            NSMutableDictionary *provinceDic = [provinceArray lastObject];
            NSMutableArray *cityArray = [provinceDic objectForKey:@"cityArray"];
            NSMutableDictionary *cityDic = [cityArray lastObject];
            NSMutableArray *areaArray = [cityDic objectForKey:@"areaArray"];
            [areaArray addObject:lineString];
        }
    }
    for (NSDictionary *provinceDic in provinceArray) {
        Province *province = [[Province alloc] init];
        [province setValuesForKeysWithDictionary:provinceDic];
        [self.provinceArray addObject:province];
    }
    

}


- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self getData];
    for (Province *province in self.provinceArray) {
        NSLog(@"province name:%@",province.provinceName);
        for (City *city in province.cityArray) {
             NSLog(@"city name:%@",city.cityName);
            for (Area *area in city.areaArray) {
                 NSLog(@"area name:%@",area.areaName);
            }
        }
    }
    }

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

BaseModel.m 这是基类

-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
}

Province.h这是一个城市的对象 继承于基类

@property (nonatomic,retain)NSString *provinceName;
@property (nonatomic,retain)NSArray *cityArray;

Province.m

#import "Province.h"
#import "City.h"

@implementation Province
-(void)setValue:(id)value forKey:(NSString *)key{
    if ([key isEqualToString:@"cityArray"]) {
        NSMutableArray *cityArray = [[NSMutableArray alloc] init];
        for (NSDictionary *cityDic in value) {
            City *city = [[City alloc] init];
            [city setValuesForKeysWithDictionary:cityDic];
            [cityArray addObject:city];
        }
        self.cityArray = [cityArray copy];
    }else{
        [super setValue:value forKey:key];
    }
}
@end

City.h

#import "BaseModel.h"
@interface City : BaseModel
@property (nonatomic,retain)NSString *cityName;
@property (nonatomic,retain)NSArray *areaArray;
@end

City.m

#import "City.h"
#import "Area.h"

@implementation City
-(void)setValue:(id)value forKey:(NSString *)key{
    if ([key isEqualToString:@"areaArray"]) {
        NSMutableArray *areaArray = [NSMutableArray array];
        for (NSString *areaName in value) {
            Area *area = [[Area alloc] init];
            //[area setAreaName:areaName];
            area.areaName = areaName;
            [areaArray addObject:area];
            }
        self.areaArray = [areaArray copy];
    } else {
        [super setValue:value forKey:key];
    }
}

Area.h

@property (nonatomic,retain)NSString *areaName;

这是根据setValue来解析的,大家可以看看我之前发的思维图来找找思路哦

你可能感兴趣的:(UI08-省市区 -模型嵌套)