// // DB_Helper.m // LNManager // // Created by EchoShacolee on 2017/4/12. // Copyright © 2017年 lee. All rights reserved. // #import "DBManager.h" #import @implementation DBManager { //数据库对象 FMDatabase *_database; } /** 创建数据库类的单例对象 **/ + (DBManager *)sharedManager { static DBManager *manager = nil; @synchronized(self) {//同步 执行 防止多线程操作 if (manager == nil) { manager = [[DBManager alloc] init]; } } return manager; } - (id)init { if (self = [super init]) { //1.获取数据库文件app.db的路径 NSString *filePath = [self getFileFullPathWithFileName:SQLITE_NAME]; //2.创建database _database = [[FMDatabase alloc] initWithPath:filePath]; //3.open //第一次 数据库文件如果不存在那么 会创建并且打开 //如果存在 那么直接打开 if ([_database open]) { // NSLog(@"数据库打开成功"); }else { NSLog(@"database open failed:%@",_database.lastErrorMessage); } } return self; } #pragma mark - 获取文件的全路径 //获取文件在沙盒中的 Documents中的路径 - (NSString *)getFileFullPathWithFileName:(NSString *)fileName { NSString * bundlePath = [[NSBundle mainBundle]pathForResource:fileName ofType:@""]; NSFileManager *fm = [NSFileManager defaultManager]; if ([fm fileExistsAtPath:bundlePath]) { // NSLog(@"%@",bundlePath); return bundlePath; }else { //如果不存在可以创建一个新的 NSLog(@"Documents不存在"); return nil; } } -(NSArray*)getAreaFromSqlite { NSMutableArray *questions=[[NSMutableArray alloc] init]; if ([_database open]) { NSString *sql = @"select * from area order by parent_code"; FMResultSet *s=[_database executeQuery:sql]; while ([s next]) { NSMutableDictionary *question = [NSMutableDictionary dictionary]; question[@"name"] = [s stringForColumn:@"name"]; question[@"code"] = [s stringForColumn:@"code"]; question[@"parent_code"] = [s stringForColumn:@"parent_code"]; [questions addObject:question]; } }else{ NSLog(@"ERROR: db unOpen"); } NSMutableArray *firArr = [NSMutableArray array];//市 NSMutableArray *secArr = [NSMutableArray array];//区 NSMutableArray *first_Codes = [NSMutableArray array]; for (int i = 0; i < questions.count;i++) { NSDictionary* area = questions[i]; NSInteger pLen= [area[@"parent_code"] length]; if (pLen == 2) { [firArr addObject:area]; [first_Codes addObject:area[@"code"]]; [secArr addObject:[NSMutableArray array]]; }else if(pLen >= 4){ NSMutableArray *arr = secArr[[first_Codes indexOfObject:area[@"parent_code"]]]; [arr addObject:area]; } } //最后两行数据 漳州开发区,平潭开发区 没什么意义 [firArr removeLastObject]; [firArr removeLastObject]; [secArr removeLastObject]; [secArr removeLastObject]; if(![_database close]) { NSLog(@"数据库关闭异常,请检查");; } return @[firArr,secArr]; } -(NSMutableArray *)loadArea { NSMutableArray *questions=[[NSMutableArray alloc] init]; if ([_database open]) { NSString *sql = @"select * from area order by parent_code";// FMResultSet *s=[_database executeQuery:sql]; while ([s next]) { NSMutableDictionary* question = [NSMutableDictionary dictionary]; question[@"name"] = [s stringForColumn:@"name"]; question[@"code"] = [s stringForColumn:@"code"]; question[@"parent_code"] = [s stringForColumn:@"parent_code"]; [questions addObject:question]; } }else{ NSLog(@"ERROR: db unOpen"); } NSMutableArray *firArr = [NSMutableArray array]; NSMutableArray *secArr = [NSMutableArray array]; NSMutableArray* areaArr = questions; NSMutableArray *first_Codes = [NSMutableArray array]; for (int i = 0; i < areaArr.count;i++) { NSDictionary* area = areaArr[i]; NSInteger pLen= [area[@"parent_code"] length]; if (pLen == 2) { [firArr addObject:area[@"name"]]; [first_Codes addObject:area[@"code"]]; [secArr addObject:[NSMutableArray array]]; }else if(pLen >= 4){ NSMutableArray *arr = secArr[[first_Codes indexOfObject:area[@"parent_code"]]]; [arr addObject:area[@"name"]]; } } //最后两行数据 漳州开发区,平潭开发区 没什么意义 [firArr removeLastObject]; [firArr removeLastObject]; [secArr removeLastObject]; [secArr removeLastObject]; //返回内容 @【市名数组,对应区名数组,all_dic数组】 return [NSMutableArray arrayWithObjects:firArr,secArr,areaArr, nil]; } @end