从网络上下载省份城市名称并存入文件然后进行读取省份城市

//实现的功能是 从后台拿到城市的省份以及名称,然后保存在本地的沙盒中 在使用的时候再拿出来用。

步骤1

//向后台请求数据

 //忽略缓存
    [RequestTools postJSONWithUrl:G.YB_GetZoneList parameters:@{} success:^(id responseObject) {
        NSError *error = nil;
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:&error];
        if (error) {
            NSLog(@"json error:%@",error);
        } else {
            if (![dic[@"code"] isEqualToString:@"GOOD"]) {
                return;
            }
            if (![[dic objectForKey:@"content"] isKindOfClass:[NSNull class]]) {
                //对数据进行解析
                NSArray *provinces = [dic objectForKey:@"content"];
                if (provinces.count > 0) {
                    //重要代码
                    [[AccountManager shareManager] cacheCitiesInfomation:provinces];
                    _locationArray = [[AccountManager shareManager] getCitiesInfomation];
                }
            }
            
        }
        
    } fail:^(id obj) {
        NSLog(@"error:%@",obj);
    }];

 步骤二:将解析到到的数据存起来

///缓存地区信息
- (void)cacheCitiesInfomation:(NSArray *)provincesDic{
    NSString *citiesPath = [self getPathWithFileName:@"cities.data"];
    [provincesDic writeToFile:citiesPath atomically:YES];
}
- (NSString *)getPathWithFileName:(NSString *)fileName{
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    return [path stringByAppendingPathComponent:fileName];
}

 步骤三:从文件中读取信息

///读取地区信息
- (NSArray *)getCitiesInfomation{
    NSString *citiesPath = [self getPathWithFileName:@"cities.data"];
    NSArray *provincesDic = [[NSArray alloc] initWithContentsOfFile:citiesPath];
    if (provincesDic==nil || provincesDic.count==0) {
        return nil;
    }
    NSMutableArray *provinces = [NSMutableArray array];
    for (NSDictionary *proDic in provincesDic) {
        FCZoneProvince *province = [[FCZoneProvince alloc] init];
        province.provinceName = proDic[@"provinceName"];
        //某一省下的所有市
        NSArray *citiesDic = proDic[@"cities"];
        NSMutableArray *cities = [NSMutableArray array];
        for (NSDictionary *cityDic in citiesDic) {
            FCZoneCity *city = [[FCZoneCity alloc] init];
            city.cityName = cityDic[@"cityName"];
            //某一城市下的所有区
            NSArray *countriesDic = cityDic[@"counties"];
            NSMutableArray *coutries = [NSMutableArray array];
            for (NSDictionary *countryDic in countriesDic) {
                FCZoneCountry *country = [[FCZoneCountry alloc] init];
                country.countryName = countryDic[@"countyName"];
                if ([country.countryName isEqualToString:@"市辖区"]) {
                    continue;
                }
                [coutries addObject:country];
            }
            city.countries = coutries;
            [cities addObject:city];
        }
        province.cities = cities;
        [provinces addObject:province];
    }
    return provinces;
}

 这样就获得了    provinces  and  cities

 在这里我只是提供一个这样的思路,有了思路估计很快就可以上手了吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏哈雷彗星撞地球

iOS 中如何判断当前是2G/3G/4G/5G/WiFi

5G 什么的,还得等苹果API更新啊,不过将来还是这个处理过程就是了。 关于判断当前的网络环境是2G/3G/4G,这个问题以前经常看到,最近在一工程里看到了如...

25820
来自专栏iOS开发攻城狮的集散地

UIActivityViewController系统原生分享-仿简书分享

46780
来自专栏岑志军的专栏

iOS判断运营商类型

29170
来自专栏iOS Developer

iOS开发内购全套图文教程

20160
来自专栏DannyHoo的专栏

保存图片到沙盒并从沙盒中取出

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

12110
来自专栏王大锤

iOS 根据生日得到生肖,星座,年龄的算法

52060
来自专栏DannyHoo的专栏

NSOperation的简单使用代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

12910
来自专栏coding...

Objective-C NSFileManager的使用 各种文件操作所有方法具体实现

初始化一下NSFileManager 并获取根路径 主要是加了一些判断,代码不是很精简 不要笑我。

10330
来自专栏iOS122-移动混合开发研究院

RDVTabBarController--可自由定制的iOS底部导航控件

RDVTabBarController:一个十分完善的tabBarController,可以自定义角标个数,爽的停不下来。 RDVTabBarControlle...

228100
来自专栏岑志军的专栏

简单的计步器实现

18130

扫码关注云+社区

领取腾讯云代金券