讲之前先请大家下载一个demo,封装的很好,很好用的一个类;
https://github.com/gaojunquan/JQFMDB
接下来我要讲的就是以这个为基础的;
1.首先呢先导入两个文件夹:先导入文件 FMDatabase(注:这个可以从github上下载)和JQFMDB(这个是一个封装的比较完好的类);
//读取数据库中应用列表信息
//获取Documents文件夹位置
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
//新建一个.plist文件放置到Documents文件中
//首次写需要写明[JQFMDB shareDatabase:@"emm.sqlite" path:path];以后再调用的时候直接用[JQFMDB shareDatabase],即可
JQFMDB * db = [JQFMDB shareDatabase:@"emm.sqlite" path:path];
//设置表名名: (此处我写的很麻烦,是因为要对应用户ID,支持多用户登录,且要全局使用)<此处可以自己定义>
[[UULocalPersistenceUtil sharedInstance] setClientUserFileName:[NSString stringWithFormat:@"homeAppList%@",[UULocalPersistenceUtil sharedInstance].clientUserId]];
//建表:(此项目中需要两个表,一个应用列表,一个是已安装的应用列表)
static dispatch_once_t onceTok1;
dispatch_once(&onceTok1, ^{
JQFMDB *db = [JQFMDB shareDatabase];
if (![db jq_isExistTable:@"appList"]) {
//可以直接以model形式建表,如果所写的model中的属性有特殊的,需要在 "JQFMDB.m"文件中 -(NSString *)propertTypeConvert:(NSString *)typeStr中做相应修改
[db jq_createTable:@"appList" dicOrModel:[UUModelAppInfo class]];
//查询所建表中的字段名
NSMutableArray * columnNameArr = [NSMutableArray arrayWithArray:[db jq_columnNameArray:@"appList"]];
NSLog(@"columnNameArr = %@",columnNameArr);
}
if (![db jq_isExistTable:[UULocalPersistenceUtil sharedInstance].clientUserFileName]) {
[db jq_createTable:[UULocalPersistenceUtil sharedInstance].clientUserFileName dicOrModel:[UUModelAppInfo class]];
NSMutableArray * columnNameArr = [NSMutableArray arrayWithArray:[db jq_columnNameArray:[UULocalPersistenceUtil sharedInstance].clientUserFileName]];
NSLog(@"columnNameArr = %@",columnNameArr);
[self requestGetChangeFromPkgNameAndEdition];
}
});
//读取数据库中表的数据;
JQFMDB *db = [JQFMDB shareDatabase];
//判断是否有存储信息
if ([db jq_isExistTable:@"appList"]) {
//format设置为nil,表示无条件查询所有的数据;
NSArray *resultArr = [db jq_lookupTable:@"appList" dicOrModel:[UUModelAppInfo class] whereFormat:nil]; self.dataArray = [NSMutableArray arrayWithArray:resultArr];
}
//插入数据:
JQFMDB * db = [JQFMDB shareDatabase];
//先判断是否有所需要的表存在
if(![db jq_isExistTable:[UULocalPersistenceUtil sharedInstance].clientUserFileName]) {
[db jq_createTable:[UULocalPersistenceUtil sharedInstance].clientUserFileName dicOrModel:[UUModelAppInfo class]];
}
[db jq_insertTable:[UULocalPersistenceUtil sharedInstance].clientUserFileName dicOrModel:cell.appInfoModel];
//这个操作建议放在 - (void)viewDidDisappear:(BOOL)animated 中,具体情况自己斟酌;
JQFMDB *db = [JQFMDB shareDatabase];
[db jq_deleteAllDataFromTable:@"appList"]; //删除所有的数据
[db jq_insertTable:@"appList" dicOrModelArray:self.dataArray]; //插入新刷新的数据;
如果觉得还不错,点个赞呗!