美文网首页
UI08-省市区 -模型嵌套

UI08-省市区 -模型嵌套

作者: Miss_差不多 | 来源:发表于2017-08-15 20:34 被阅读7次

    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-省市区 -模型嵌套

          本文链接:https://www.haomeiwen.com/subject/gigvrxtx.html