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


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

    步骤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

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

    对上述的代码,有任何疑问,可以在下方留言。 也可以给我发邮件咨询:673658917@qq.com 或者是直接加qq:673658917 转载请注明出处,谢谢合作。 睡觉舒服,那是给死人准备的,加油吧,一年后你会感谢现在的自己的。
  • 相关阅读:
    日志规范实践
    序列化和反序列化及Protobuf 基本使用
    简述TCP网络编程本质
    笔记:多线程服务器的适用场合(1)
    聊聊同步、异步、阻塞与非阻塞(转)
    《EntrePreneur》发刊词
    make和makefile简明基础
    luogu P3687 [ZJOI2017]仙人掌 |树形dp
    luogu P3172 [CQOI2015]选数 |容斥原理
    luogu P4513 小白逛公园 |线段树
  • 原文地址:https://www.cnblogs.com/lishanshan/p/5512671.html
Copyright © 2020-2023  润新知