从网络上下载省份城市名称并存入文件然后进行读取省份城市
时间:2022-04-26
本文章向大家介绍从网络上下载省份城市名称并存入文件然后进行读取省份城市,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
//实现的功能是 从后台拿到城市的省份以及名称,然后保存在本地的沙盒中 在使用的时候再拿出来用。
步骤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
在这里我只是提供一个这样的思路,有了思路估计很快就可以上手了吧。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- keras 模型参数,模型保存,中间结果输出操作
- python判断是空的实例分享
- keras绘制acc和loss曲线图实例
- 基于Python实现2种反转链表方法代码实例
- Python smtp邮件发送模块用法教程
- Python3基于print打印带颜色字符串
- Python StringIO及BytesIO包使用方法解析
- PHP设计模式之PHP迭代器模式讲解
- 简单实用的PHP文本缓存类实例
- Keras 实现加载预训练模型并冻结网络的层
- Django-imagekit的使用详解
- Python类super()及私有属性原理解析
- Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
- 简单了解Python多态与属性运行原理
- 树莓派升级python的具体步骤