Skip to content

利用RunTime实现基于FMDB的二次封装,简单易懂。API方便

Notifications You must be signed in to change notification settings

KitsGithub/FMDB_Manger-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 

Repository files navigation

FMDB_Manger

基于FMDB的二次封装。 本项目利用runTime来动态获取所传入模型Class 的属性来创建数据库,和内部封装了一些基本的数据库操作,无需类依赖,在查询的时候,无需手动创建对象。直接把查询出来对应的模型的数据传递出来。

tips:由于技术原因,因此模型里面的类型需要是Object,暂不支持int、Float、doublt 这种基本数据类型,以后会持续更新和优化。请谅解

目录

  • 更新日志
  • API介绍

更新日志

17.11.3 修改了插入数据的API以及内部实现

17.10.25 基本完成FMDB_Manager的方法编写

API介绍

FMDB_Manger的初始化方法

FMDB_Manager *manager = [FMDB_Manager shareManager];

同时,为了多个不同的使用场景,因而需要外部传入数据库路径,可通过实现delegate来传入数据库路径

/**
代理协议
*/
@protocol FMDB_Manager_Delegate <NSObject>

@required


@optional
- (NSString *)dbPath;


@end

而指定DataSource 则可以动态传入某个场景需要的表名,如果不实现,则表名为所传入的Class,后面API会做详细解说

/**
数据源协议
*/
@protocol FMDB_Manager_DataSource <NSObject>
@optional
- (NSString *)tableNameWithModelClass:(id)Class;

@end

数据库的增

/**
创建数据库

@param modelClass      数据模型Class
@param callBack        结果回调
*/
- (void)creatTableIfNotExistWithModelClass:(id)modelClass callBack:(CallBack)callBack;

创建数据库的用法

- (void)creatDB {
    //创建数据库
    [[FMDB_Manager shareManager] creatTableIfNotExistWithModelClass:[DBModel class] callBack:^(BOOL success) {
        if (success) {
            NSLog(@"数据库创建成功");
        }
    }];
}

向数据库中添加新的数据

/**
插入数据到 表

@param modelClass      数据模型Class
@param modelArray      模型数组
@param callBack        结果回调
*/
- (void)InsertDataInTable:(id)modelClass withModelsArray:(NSArray <NSObject *> *)modelArray callBack:(CallBack)callBack;

增加的数据的用法

- (void)creatDataToDB {
    [[FMDB_Manager shareManager] InsertDataInTable:[DBModel class] withModelsArray:[self.dataArray copy] callBack:^(BOOL success) {
        if (success) {
            NSLog(@"插入成功");
        } else {
            NSLog(@"插入失败");
        }
    }];
}

数据库的删

从表中删除数据

/**
删除表数据

@param modelClass      数据模型Class
@param options         删除条件
@param callBack        结果回调
*/
- (void)DeletedDataFromTable:(id)modelClass withOptions:(NSString *)options callBack:(CallBack)callBack;

删除表数据的用法

- (void)deletedData {
    [[FMDB_Manager shareManager] DeletedDataFromTable:[DBModel class] withOptions:@"age >= 50" callBack:^(BOOL success) {
        if (success) {
            NSLog(@"删除成功");
        }
    }];
}

数据库的改

/**
修改表的数据

@param modelClass      数据模型Class
@param option1         修改内容
@param option2         修改条件
@param callBack        修改结果回调
*/
- (void)alterTableWithTableName:(id)modelClass withOpton1:(NSString *)option1 andOption2:(NSString *)option2 callBack:(CallBack)callBack;

修改表数据的用法

- (void)updataData {
    [[FMDB_Manager shareManager] alterTableWithTableName:[DBModel class] withOpton1:@"name = '我是男人'" andOption2:@"sex = '男'" callBack:^(BOOL success) {
        if (success) {
            NSLog(@"修改成功");
        }
    }];
}

数据库的查

/**
查询表数据

@param modelClass      数据模型Class
@param options         查询条件
@param callBack        查询结果回调 带modelClassObject 的对象数组 @[<ModelClassObject1>,<ModelClassObject2>,...]
*/
- (void)SearchTable:(id)modelClass withOptions:(NSString *)options callBack:(FMResultsCallBack)callBack;

查询表数据的用法

//查询数据
- (void)searchData {
    [[FMDB_Manager shareManager] SearchTable:[DBModel class] withOptions:@"age = 10" callBack:^(NSArray<NSObject *> *array) {
        NSLog(@"查询出 %zd 个对象",array.count);
        for (NSInteger index = 0; index<array.count; index++) {
            DBModel *model = (DBModel *)array[index];
            NSLog(@"%@",model.name);
        }
    }];
}

新增数据库索引

同时,由于使用场景的不同,提供了一个为表添加索引的API 和删除数据库表的方法

/**
为表添加索引

@param modelClass      数据模型Class
@param indexes         索引字段
@param IndexesName     新增的索引名
@param callBack        结果回调
*/
- (void)creatIndexInTable:(id)modelClass withString:(NSString *)indexes andIndexName:(NSString *)IndexesName callBack:(CallBack)callBack;

删除数据库表

/**
删除数据库表

@param modelClass      数据模型Class __ 如没有设置DataSource,则取Class名为表名试着删除
@param callBack        删除结果
*/
- (void)deletedTableWithTableName:(id)modelClass callBack:(CallBack)callBack;

删除数据库表的用法

//删除数据库表
- (void)deletedTable {
    [[FMDB_Manager shareManager] deletedTableWithTableName:[DBModel class] callBack:^(BOOL success) {
        if (success) {
            NSLog(@"删除成功");
        }
    }];
}

About

利用RunTime实现基于FMDB的二次封装,简单易懂。API方便

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published