从网络上下载省份城市名称并存入文件然后进行读取省份城市
2016-05-20 16:45
423 查看
//实现的功能是 从后台拿到城市的省份以及名称,然后保存在本地的沙盒中 在使用的时候再拿出来用。
步骤1
//向后台请求数据
步骤二:将解析到到的数据存起来
步骤三:从文件中读取信息
这样就获得了 provinces and cities
在这里我只是提供一个这样的思路,有了思路估计很快就可以上手了吧。
步骤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
在这里我只是提供一个这样的思路,有了思路估计很快就可以上手了吧。
相关文章推荐
- OkHttp3设置Content-Type
- 13.进程间通信---网络通信(TCP协议和UDP协议的比较)
- 12.进程间通信---网络通信(TCP协议,一对多)
- Android网络请求框架AsyncHttpClient详解
- 关于HttpWebRequest发生服务器协议冲突的解决办法
- Android 采用HttpClient的POST方式、GET方式分别实现登陆案例
- BP神经网络原理
- 连不上网络的情况及解决
- 网络通信框架Volley使用详细说明
- Ubuntu 14.04 使用qemu创建虚拟机并配置桥接网络
- springMVC之HttpServletRequest的getParameterMap()
- HTTP协议知识点总结
- Java网络编程基础(二)-- 基于TCP/IP的Socket编程
- 网络统计命令
- 【深度学习】超轻量级网络SqueezeNet算法详解
- 关于神经网络和深度学习的资料
- (待测试) html 页面跳转效果(http-equiv 标签使用)
- HTTP Keep-Alive
- OKHTTP的单例和再封装
- 使用Android API最佳实践 Retrofit OKHttp GSON