ifish/Ifish/views/ChinaPlckerView/ChinaArea.m

312 lines
9.8 KiB
Objective-C
Executable File

//
// ChinaArea.m
// 地址选择器
//
// Created by zhuming on 16/2/15.
// Copyright © 2016年 zhuming. All rights reserved.
//
#import "ChinaArea.h"
@interface ChinaArea ()
@property (nonatomic,strong)FMDatabaseQueue *fmdbQueue;
@property (nonatomic,strong)FMDatabase *dataBase;
@property (nonatomic,copy)NSString *dbPath;
@end
@implementation ChinaArea
- (instancetype)init{
if (self = [super init]) {
[self initDataBase];
// [self creatProvinceTabel];
// [self creatCityTabel];
// [self creatAreaTabel];
}
return self;
}
/**
* 初始化数据库
*/
- (void)initDataBase{
self.dbPath=[[NSBundle mainBundle]pathForResource:@"china_citys_name.db" ofType:nil];
self.fmdbQueue = [[FMDatabaseQueue alloc] initWithPath:self.dbPath];
self.dataBase = [[FMDatabase alloc] initWithPath:self.dbPath];
}
/**
* 创建省份表单
*/
- (void)creatProvinceTabel{
[self.dataBase open];
[self.dataBase executeUpdate:@"CREATE TABLE IF NOT EXISTS Province (rowid INTEGER PRIMARY KEY AUTOINCREMENT, GRADE text,ID text,NAME text,PARENT_AREA_ID text)"];
[self.dataBase close];
}
/**
* 创建城市表单
*/
- (void)creatCityTabel{
[self.dataBase open];
[self.dataBase executeUpdate:@"CREATE TABLE IF NOT EXISTS City (rowid INTEGER PRIMARY KEY AUTOINCREMENT, GRADE text,ID text,NAME text,PARENT_AREA_ID text)"];
[self.dataBase close];
}
/**
* 创建区域表单
*/
- (void)creatAreaTabel{
[self.dataBase open];
[self.dataBase executeUpdate:@"CREATE TABLE IF NOT EXISTS Area (rowid INTEGER PRIMARY KEY AUTOINCREMENT, GRADE text,ID text,NAME text,PARENT_AREA_ID text)"];
[self.dataBase close];
}
/**
* 插入省份数据
*
* @param province 省份模型
*/
- (void)insterProvince:(ProvinceModel *)province{
[self.fmdbQueue inDatabase:^(FMDatabase *db) {
[db open];
[db executeUpdate:@"INSERT INTO Province (GRADE,ID,NAME,PARENT_AREA_ID) VALUES (?,?,?,?)",province.GRADE,province.ID,province.NAME,province.PARENT_AREA_ID];
[db close];
}];
}
/**
* 插入城市数据
*
* @param city 城市模型
*/
- (void)insterCity:(CityModel *)city{
[self.fmdbQueue inDatabase:^(FMDatabase *db) {
[db open];
[db executeUpdate:@"INSERT INTO City (GRADE,ID,NAME,PARENT_AREA_ID) VALUES (?,?,?,?)",city.GRADE,city.ID,city.NAME,city.PARENT_AREA_ID];
[db close];
}];
}
/**
* 插入区域数据
*
* @param area 区域模型
*/
- (void)insterArea:(AreaModel *)area{
[self.fmdbQueue inDatabase:^(FMDatabase *db) {
[db open];
[db executeUpdate:@"INSERT INTO Area (GRADE,ID,NAME,PARENT_AREA_ID) VALUES (?,?,?,?)",area.GRADE,area.ID,area.NAME,area.PARENT_AREA_ID];
[db close];
}];
}
/**
* 获取所有省份模型的集合数组
*
* @return 返回所有省份数据模型的集合
*/
- (NSMutableArray *)getAllProvinceData{
NSMutableArray *provinceArray = [[NSMutableArray alloc] init];
[self.fmdbQueue inDatabase:^(FMDatabase *db) {
[self openChinaAreaDB:db];
FMResultSet *result = [db executeQuery:@"SELECT * FROM Province"];
while ([result next]) {
ProvinceModel *model = [[ProvinceModel alloc] init];
model.GRADE = [result stringForColumn:@"GRADE"];
model.ID = [result stringForColumn:@"ID"];
model.NAME = [result stringForColumn:@"NAME"];
model.PARENT_AREA_ID = [result stringForColumn:@"PARENT_AREA_ID"];
[provinceArray addObject:model];
}
[db close];
}];
return provinceArray;
}
/**
* 根据省份ID获取对应的省份数据模型
*
* @param provinceID 省份ID
*
* @return 省份数据模型
*/
- (ProvinceModel *)getProvinceDataByID:(NSString *)provinceID{
ProvinceModel *pmodel = [[ProvinceModel alloc] init];
[self.fmdbQueue inDatabase:^(FMDatabase *db) {
[self openChinaAreaDB:db];
FMResultSet *result = [db executeQuery:@"SELECT * FROM Province WHERE ID = ?",provinceID];
while ([result next]) {
pmodel.GRADE = [result stringForColumn:@"GRADE"];
pmodel.ID = [result stringForColumn:@"ID"];
pmodel.NAME = [result stringForColumn:@"NAME"];
pmodel.PARENT_AREA_ID = [result stringForColumn:@"PARENT_AREA_ID"];
}
[db close];
}];
return pmodel;
}
/**
* 根据省份ID获取该省份的所有城市数据模型的集合
*
* @param parentID 省份ID
*
* @return 一个省份的城市数据模型集合
*/
- (NSMutableArray *)getCityDataByParentID:(NSString *)parentID{
NSMutableArray *cityArray = [[NSMutableArray alloc] init];
[self.fmdbQueue inDatabase:^(FMDatabase *db) {
[self openChinaAreaDB:db];
FMResultSet *result = [db executeQuery:@"SELECT * FROM City WHERE PARENT_AREA_ID = ?",parentID];
while ([result next]) {
CityModel *model = [[CityModel alloc] init];
model.GRADE = [result stringForColumn:@"GRADE"];
model.ID = [result stringForColumn:@"ID"];
model.NAME = [result stringForColumn:@"NAME"];
model.PARENT_AREA_ID = [result stringForColumn:@"PARENT_AREA_ID"];
[cityArray addObject:model];
}
[db close];
}];
return cityArray;
}
/**
* 根据城市ID获取对应的城市数据模型
*
* @param cityID 城市ID
*
* @return 城市数据模型
*/
- (CityModel *)getCityDataByID:(NSString *)cityID{
CityModel *pmodel = [[CityModel alloc] init];
[self.fmdbQueue inDatabase:^(FMDatabase *db) {
[self openChinaAreaDB:db];
FMResultSet *result = [db executeQuery:@"SELECT * FROM City WHERE ID = ?",cityID];
while ([result next]) {
pmodel.GRADE = [result stringForColumn:@"GRADE"];
pmodel.ID = [result stringForColumn:@"ID"];
pmodel.NAME = [result stringForColumn:@"NAME"];
pmodel.PARENT_AREA_ID = [result stringForColumn:@"PARENT_AREA_ID"];
}
[db close];
}];
return pmodel;
}
/**
* 根据城市ID获取该城市的所有区域数据模型的集合
*
* @param parentID 城市ID
*
* @return 一个城市的区域数据模型集合
*/
- (NSMutableArray *)getAreaDataByParentID:(NSString *)parentID{
NSMutableArray *areaArray = [[NSMutableArray alloc] init];
[self.fmdbQueue inDatabase:^(FMDatabase *db) {
[self openChinaAreaDB:db];
FMResultSet *result = [db executeQuery:@"SELECT * FROM Area WHERE PARENT_AREA_ID = ?",parentID];
while ([result next]) {
AreaModel *model = [[AreaModel alloc] init];
model.GRADE = [result stringForColumn:@"GRADE"];
model.ID = [result stringForColumn:@"ID"];
model.NAME = [result stringForColumn:@"NAME"];
model.PARENT_AREA_ID = [result stringForColumn:@"PARENT_AREA_ID"];
[areaArray addObject:model];
}
[db close];
}];
return areaArray;
}
/**
* 根据地区ID获取对应的地区数据模型
*
* @param areaID 地区ID
*
* @return 地区数据模型
*/
- (AreaModel *)getAreaDataByID:(NSString *)areaID{
AreaModel *pmodel = [[AreaModel alloc] init];
[self.fmdbQueue inDatabase:^(FMDatabase *db) {
[self openChinaAreaDB:db];
FMResultSet *result = [db executeQuery:@"SELECT * FROM Area WHERE ID = ?",areaID];
while ([result next]) {
pmodel.GRADE = [result stringForColumn:@"GRADE"];
pmodel.ID = [result stringForColumn:@"ID"];
pmodel.NAME = [result stringForColumn:@"NAME"];
pmodel.PARENT_AREA_ID = [result stringForColumn:@"PARENT_AREA_ID"];
}
[db close];
}];
return pmodel;
}
/**
* 打开数据库
*
* @param db db description
*/
- (void)openChinaAreaDB:(FMDatabase *)db{
BOOL isOpen = [db open];
if (isOpen == YES) {
// ITLog(@"数据库ChinaArea.db 打开成功!\n路径 = %@",self.dbPath);
}
else{
// ITLog(@"数据库ChinaArea.db 打开失败!\n路径 = %@",self.dbPath);
}
}
/**
* 制作省份数据模型
*
* @param GRADE GRADE
* @param ID 省份ID
* @param NAME 省份名称
* @param PARENT_AREA_ID 上一级ID
*
* @return 省份数据模型
*/
- (ProvinceModel *)makeProvinceModel:(NSNumber *)GRADE provinceID:(NSNumber *)ID name:(NSString *)NAME parentId:(NSNumber *)PARENT_AREA_ID{
ProvinceModel *model = [[ProvinceModel alloc] init];
model.GRADE = [NSString stringWithFormat:@"%@",GRADE];
model.ID = [NSString stringWithFormat:@"%@",ID];
model.NAME = NAME;
model.PARENT_AREA_ID = [NSString stringWithFormat:@"%@",PARENT_AREA_ID];
return model;
}
/**
* 制作城市数据模型
*
* @param GRADE GRADE
* @param ID 城市ID
* @param NAME 城市名称
* @param PARENT_AREA_ID 上一级省份ID
*
* @return 城市数据模型
*/
- (CityModel *)makeCityModel:(NSNumber *)GRADE cityID:(NSNumber *)ID name:(NSString *)NAME parentId:(NSNumber *)PARENT_AREA_ID{
CityModel *model = [[CityModel alloc] init];
model.GRADE = [NSString stringWithFormat:@"%@",GRADE];
model.ID = [NSString stringWithFormat:@"%@",ID];
model.NAME = NAME;
model.PARENT_AREA_ID = [NSString stringWithFormat:@"%@",PARENT_AREA_ID];
return model;
}
/**
* 制作区域数据模型
*
* @param GRADE GRADE
* @param ID 区域ID
* @param NAME 区域名称
* @param PARENT_AREA_ID 上一级城市D
*
* @return 区域数据模型
*/
- (AreaModel *)makeAreaModel:(NSNumber *)GRADE areaID:(NSNumber *)ID name:(NSString *)NAME parentId:(NSNumber *)PARENT_AREA_ID{
AreaModel *model = [[AreaModel alloc] init];
model.GRADE = [NSString stringWithFormat:@"%@",GRADE];
model.ID = [NSString stringWithFormat:@"%@",ID];
model.NAME = NAME;
model.PARENT_AREA_ID = [NSString stringWithFormat:@"%@",PARENT_AREA_ID];
return model;
}
@end