Skip to content

Commit

Permalink
更新API说明.
Browse files Browse the repository at this point in the history
  • Loading branch information
huangzhibiao authored Mar 9, 2017
1 parent 924160b commit 6723c44
Showing 1 changed file with 167 additions and 39 deletions.
206 changes: 167 additions & 39 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,22 @@ LKDBHelper好一点,但也要复写不少的函数,而且LKDBHelper的使用demo
## 综合上述原因后,我决定写一款适合国内初中级开发这使用的封装库(BGFMDB),不管是从使用步骤还是支持的存储类型上,都比JRDB,LKDB简单好用和全面.
## 本库几乎支持存储ios所有基本的自带数据类型.
## 一看就懂,马马上手使用,废话不多说,看使用Api介绍.
//同步:线程阻塞;异步:线程非阻塞;
@property(nonatomic,strong)NSNumber*_Nullable ID;//本库自带的自动增长主键.
/**
设置调试模式
@debug YES:打印SQL语句, NO:不打印SQL语句.
*/
+(void)setDebug:(BOOL)debug;
+(void)setDebug:(BOOL)debug;
/**
事务操作.
@return 返回YES提交事务, 返回NO回滚事务.
*/
+(void)inTransaction:(BOOL (^_Nonnull)())block;
自定义 “唯一约束” 函数,如果需要 “唯一约束”字段,则在自定类中自己实现该函数.
@return 返回值是 “唯一约束” 的字段名(即相对应的变量名).
*/
-(NSString* _Nonnull)uniqueKey;
/**
判断这个类的数据表是否已经存在.
*/
+(BOOL)isExist;
/**
同步存储.
*/
Expand All @@ -35,101 +38,226 @@ LKDBHelper好一点,但也要复写不少的函数,而且LKDBHelper的使用demo
异步存储.
*/
-(void)saveAsync:(Complete_B)complete;
/**
同步覆盖存储.
覆盖掉原来的数据,只存储当前的数据.
*/
-(BOOL)cover;
/**
异步覆盖存储
覆盖掉原来的数据,只存储当前的数据.
*/
-(void)coverAsync:(Complete_B)complete;
/**
同步查询所有结果.
*/
+(NSArray* _Nullable)findAll;
/**
异步查询所有结果.
异步查询所有结果
*/
+(void)findAllAsync:(Complete_A)complete;
/**
@async YES:异步查询所有结果,NO:同步查询所有结果.
同步查询所有结果.
@limit 每次查询限制的条数,0则无限制.
@desc YES:降序,NO:升序.
*/
+(NSArray* _Nullable)findAllWithLimit:(NSInteger)limit orderBy:(NSString* _Nullable)orderBy desc:(BOOL)desc;
/**
异步查询所有结果.
@limit 每次查询限制的条数,0则无限制.
@desc YES:降序,NO:升序.
*/
+(void)findAllAsync:(BOOL)async limit:(NSInteger)limit orderBy:(NSString* _Nullable)orderBy desc:(BOOL)desc complete: (Complete_A)complete;
+(void)findAllAsyncWithLimit:(NSInteger)limit orderBy:(NSString* _Nullable)orderBy desc:(BOOL)desc complete: (Complete_A)complete;
/**
同步查询所有结果.
@range 查询的范围(从location开始的后面length条).
@desc YES:降序,NO:升序.
*/
+(NSArray* _Nullable)findAllWithRange:(NSRange)range orderBy:(NSString* _Nullable)orderBy desc:(BOOL)desc;
/**
@async YES:异步查询所有结果,NO:同步查询所有结果.
异步查询所有结果.
@range 查询的范围(从location开始的后面length条).
@desc YES:降序,NO:升序.
*/
+(void)findAllAsync:(BOOL)async range:(NSRange)range orderBy:(NSString* _Nullable)orderBy desc:(BOOL)desc complete:(Complete_A)complete;
+(void)findAllAsyncWithRange:(NSRange)range orderBy:(NSString* _Nullable)orderBy desc:(BOOL)desc complete:(Complete_A)complete;
/**
@async YES:异步查询所有结果,NO:同步查询所有结果.
同步条件查询所有结果.
@where 条件数组,形式@[@"name",@"=",@"标哥",@"age",@"=>",@(25)],即查询name=标哥,age=>25的数据;
可以为nil,为nil时查询所有数据;
目前不支持keypath的key,即嵌套的自定义类, 形式如@[@"user.name",@"=",@"习大大"]暂不支持.
目前不支持keypath的key,即嵌套的自定义类, 形式如@[@"user.name",@"=",@"习大大"]暂不支持(有专门的keyPath查询接口).
*/
+(void)findAsync:(BOOL)async where:(NSArray* _Nullable)where complete:(Complete_A)complete;
+(NSArray* _Nullable)findWhere:(NSArray* _Nullable)where;
/**
异步条件查询所有结果.
@where 条件数组,形式@[@"name",@"=",@"标哥",@"age",@"=>",@(25)],即查询name=标哥,age=>25的数据;
可以为nil,为nil时查询所有数据;
目前不支持keypath的key,即嵌套的自定义类, 形式如@[@"user.name",@"=",@"习大大"]暂不支持(有专门的keyPath查询接口).
*/
+(void)findAsyncWhere:(NSArray* _Nullable)where complete:(Complete_A)complete;
/**
keyPath查询
@async YES:异步查询所有结果,NO:同步查询所有结果.
@keyPath 形式 @"user.student.name".
@value 值,形式 @“小芳”
说明: 即查询 user.student.name=小芳的对象数据 (用于嵌套的自定义类)
同步查询所有keyPath条件结果.
@keyPathValues数组,形式@[@"user.student.name",Equal,@"小芳",@"user.student.conten",Contains,@"书"]
即查询user.student.name=@"小芳" 和 user.student.content中包含@“书”这个字符串的对象.
*/
+(NSArray* _Nullable)findForKeyPathAndValues:(NSArray* _Nonnull)keyPathValues;
/**
keyPath查询
异步查询所有keyPath条件结果.
@keyPathValues数组,形式@[@"user.student.name",Equal,@"小芳",@"user.student.conten",Contains,@"书"]
即查询user.student.name=@"小芳" 和 user.student.content中包含@“书”这个字符串的对象.
*/
+(void)findAsync:(BOOL)async forKeyPath:(NSString* _Nonnull)keyPath value:(id _Nonnull)value complete:(Complete_A)complete;
+(void)findAsyncForKeyPathAndValues:(NSArray* _Nonnull)keyPathValues complete:(Complete_A)complete;
/**
同步更新数据.
@where 条件数组,形式@[@"name",@"=",@"标哥",@"age",@"=>",@(25)],即更新name=标哥,age=>25的数据;
可以为nil,nil时更新所有数据;
目前不支持keypath的key,即嵌套的自定义类, 形式如@[@"user.name",@"=",@"习大大"]暂不支持.
不支持keypath的key,即嵌套的自定义类, 形式如@[@"user.name",@"=",@"习大大"]暂不支持.
*/
-(BOOL)updateWhere:(NSArray* _Nullable)where;
/**
@async YES:异步更新,NO:同步更新.
异步更新.
@where 条件数组,形式@[@"name",@"=",@"标哥",@"age",@"=>",@(25)],即更新name=标哥,age=>25的数据;
可以为nil,nil时更新所有数据;
目前不支持keypath的key,即嵌套的自定义类, 形式如@[@"user.name",@"=",@"习大大"]暂不支持.
不支持keypath的key,即嵌套的自定义类, 形式如@[@"user.name",@"=",@"习大大"]暂不支持.
*/
-(void)updateAsync:(BOOL)async where:(NSArray* _Nullable)where complete:(Complete_B)complete;
-(void)updateAsync:(NSArray* _Nullable)where complete:(Complete_B)complete;
/**
根据keypath更新数据.
同步更新.
@keyPathValues数组,形式@[@"user.student.name",Equal,@"小芳",@"user.student.conten",Contains,@"书"]
即更新user.student.name=@"小芳" 和 user.student.content中包含@“书”这个字符串的对象.
*/
-(BOOL)updateForKeyPathAndValues:(NSArray* _Nonnull)keyPathValues;
/**
根据keypath更新数据.
异步更新.
@keyPathValues数组,形式@[@"user.student.name",Equal,@"小芳",@"user.student.conten",Contains,@"书"]
即更新user.student.name=@"小芳" 和 user.student.content中包含@“书”这个字符串的对象.
*/
-(void)updateAsyncForKeyPathAndValues:(NSArray* _Nonnull)keyPathValues complete:(Complete_B)complete;
/**
同步删除数据.
@where 条件数组,形式@[@"name",@"=",@"标哥",@"age",@"=>",@(25)],即删除name=标哥,age=>25的数据.
不可以为nil;
目前不支持keypath的key,即嵌套的自定义类, 形式如@[@"user.name",@"=",@"习大大"]暂不支持
不支持keypath的key,即嵌套的自定义类, 形式如@[@"user.name",@"=",@"习大大"]暂不支持
*/
+(BOOL)deleteWhere:(NSArray* _Nonnull)where;
/**
@async YES:异步删除,NO:同步删除.
异步删除.
@where 条件数组,形式@[@"name",@"=",@"标哥",@"age",@"=>",@(25)],即删除name=标哥,age=>25的数据.
不可以为nil;
目前不支持keypath的key,即嵌套的自定义类, 形式如@[@"user.name",@"=",@"习大大"]暂不支持
不支持keypath的key,即嵌套的自定义类, 形式如@[@"user.name",@"=",@"习大大"]暂不支持
*/
+(void)deleteAsync:(NSArray* _Nonnull)where complete:(Complete_B)complete;
/**
根据keypath删除数据.
同步删除.
@keyPathValues数组,形式@[@"user.student.name",Equal,@"小芳",@"user.student.conten",Contains,@"书"]
即删除user.student.name=@"小芳" 和 user.student.content中包含@“书”这个字符串的对象.
*/
+(BOOL)deleteForKeyPathAndValues:(NSArray* _Nonnull)keyPathValues;
/**
根据keypath删除数据.
异步删除.
@keyPathValues数组,形式@[@"user.student.name",Equal,@"小芳",@"user.student.conten",Contains,@"书"]
即删除user.student.name=@"小芳" 和 user.student.content中包含@“书”这个字符串的对象.
*/
+(void)deleteAsync:(BOOL)async where:(NSArray* _Nonnull)where complete:(Complete_B)complete;
+(void)deleteAsyncForKeyPathAndValues:(NSArray* _Nonnull)keyPathValues complete:(Complete_B)complete;
/**
同步清除所有数据
*/
+(BOOL)clear;
/**
@async YES:异步清除所有数据,NO:同步清除所有数据.
异步清除所有数据.
*/
+(void)clearAsync:(BOOL)async complete:(Complete_B)complete;
+(void)clearAsync:(Complete_B)complete;
/**
同步删除这个类的数据表
*/
+(BOOL)drop;
/**
@async YES:异步删除这个类的数据表,NO:同步删除这个类的数据表.
异步删除这个类的数据表.
*/
+(void)dropAsync:(BOOL)async complete:(Complete_B)complete;
+(void)dropAsync:(Complete_B)complete;
/**
查询该表中有多少条数据
@name 表名称.
@where 条件数组,形式@[@"name",@"=",@"标哥",@"age",@"=>",@(25)],即name=标哥,age=>25的数据有多少条,为nil时返回全部数据的条数.
不支持keypath的key,即嵌套的自定义类, 形式如@[@"user.name",@"=",@"习大大"]暂不支持(有专门的keyPath查询条数接口).
*/
+(NSInteger)countWhere:(NSArray* _Nullable)where;
/**
刷新,当类变量名称改变时,调用此接口刷新一下.
@async YES:异步刷新,NO:同步刷新.
keyPath查询该表中有多少条数据
@keyPathValues数组,形式@[@"user.student.name",Equal,@"小芳",@"user.student.conten",Contains,@"书"]
即查询user.student.name=@"小芳" 和 user.student.content中包含@“书”这个字符串的对象的条数.
*/
+(void)refreshAsync:(BOOL)async complete:(Complete_I)complete;
+(NSInteger)countForKeyPathAndValues:(NSArray* _Nonnull)keyPathValues;
/**
获取本类数据表当前版本号.
*/
+(NSInteger)version;
/**
刷新,当类变量名称或"唯一约束"改变时,调用此接口刷新一下.
同步刷新.
@version 版本号,从1开始,依次往后递增.
说明: 本次更新版本号不得 低于或等于 上次的版本号,否则不会更新.
*/
+(dealState)updateVersion:(NSInteger)version;
/**
刷新,当类变量名称或"唯一约束"改变时,调用此接口刷新一下.
异步刷新.
@version 版本号,从1开始,依次往后递增.
说明: 本次更新版本号不得 低于或等于 上次的版本号,否则不会更新.
*/
+(void)updateVersionAsync:(NSInteger)version complete:(Complete_I)complete;
/**
刷新,当类变量名称或"唯一约束"改变时,调用此接口刷新一下.
同步刷新.
@version 版本号,从1开始,依次往后递增.
@keyDict 拷贝的对应key集合,形式@{@"新Key1":@"旧Key1",@"新Key2":@"旧Key2"},即将本类以前的变量 “旧Key1” 的数据拷贝给现在本类的变量“新Key1”,其他依此推类.
(特别提示: 这里只要写那些改变了的变量名就可以了,没有改变的不要写),比如A以前有3个变量,分别为a,b,c;现在变成了a,b,d;那只要写@{@"d":@"c"}就可以了,即只写变化了的变量名映射集合.
说明: 本次更新版本号不得 低于或等于 上次的版本号,否则不会更新.
*/
+(dealState)updateVersion:(NSInteger)version keyDict:(NSDictionary* const _Nonnull)keydict;
/**
刷新,当类变量名称或"唯一约束"改变时,调用此接口刷新一下.
异步刷新.
@version 版本号,从1开始,依次往后递增.
@keyDict 拷贝的对应key集合,形式@{@"新Key1":@"旧Key1",@"新Key2":@"旧Key2"},即将本类以前的变量 “旧Key1” 的数据拷贝给现在本类的变量“新Key1”,其他依此推类.
(特别提示: 这里只要写那些改变了的变量名就可以了,没有改变的不要写),比如A以前有3个变量,分别为a,b,c;现在变成了a,b,d;那只要写@{@"d":@"c"}就可以了,即只写变化了的变量名映射集合.
说明: 本次更新版本号不得 低于或等于 上次的版本号,否则不会更新.
*/
+(void)updateVersion:(NSInteger)version keyDict:(NSDictionary* const _Nonnull)keydict complete:(Complete_I)complete;
/**
将某表的数据拷贝给另一个表
同步复制.
@destCla 目标类.
@keyDict 拷贝的对应key集合,形式@{@"srcKey1":@"destKey1",@"srcKey2":@"destKey2"},即将源类srcCla中的变量值拷贝给目标类destCla中的变量destKey1,srcKey2和destKey2同理对应,依此推类.
@append YES: 不会覆盖destCla的原数据,在其末尾继续添加;NO: 覆盖掉destCla原数据,即将原数据删掉,然后将新数据拷贝过来.
*/
+(dealState)copyToClass:(__unsafe_unretained _Nonnull Class)destCla keyDict:(NSDictionary* const _Nonnull)keydict append:(BOOL)append;
/**
将某表的数据拷贝给另一个表
@async YES:异步复制,NO:同步复制.
异步复制.
@destCla 目标类.
@keyDict 拷贝的对应key集合,形式@{@"srcKey1":@"destKey1",@"srcKey2":@"destKey2"},即将源类srcCla中的变量值拷贝给目标类destCla中的变量destKey1,srcKey2和destKey2同理对应,以此推类.
@keyDict 拷贝的对应key集合,形式@{@"srcKey1":@"destKey1",@"srcKey2":@"destKey2"},即将源类srcCla中的变量值拷贝给目标类destCla中的变量destKey1,srcKey2和destKey2同理对应,依此推类.
@append YES: 不会覆盖destCla的原数据,在其末尾继续添加;NO: 覆盖掉destCla原数据,即将原数据删掉,然后将新数据拷贝过来.
*/
+(void)copyAsync:(BOOL)async toClass:(__unsafe_unretained _Nonnull Class)destCla keyDict:(NSDictionary* const _Nonnull)keydict append:(BOOL)append complete:(Complete_I)complete;
+(void)copyAsyncToClass:(__unsafe_unretained _Nonnull Class)destCla keyDict:(NSDictionary* const _Nonnull)keydict append:(BOOL)append complete:(Complete_I)complete;
/**
事务操作.
@return 返回YES提交事务, 返回NO回滚事务.
*/
+(void)inTransaction:(BOOL (^_Nonnull)())block;
/**
注册数据变化监听.
@name 注册名称,此字符串唯一,不可重复,移除监听的时候使用此字符串移除.
@return YES: 注册监听成功; NO: 注册监听失败.
*/
+(BOOL)registerChangeWithName:(NSString* const _Nonnull)name block:(ChangeBlock)block;
/**
移除数据变化监听.
@name 注册监听的时候使用的名称.
@return YES: 移除监听成功; NO: 移除监听失败.
*/
+(BOOL)removeChangeWithName:(NSString* const _Nonnull)name;

0 comments on commit 6723c44

Please sign in to comment.