iOS BGFMDB
2018-11-15 本文已影响10人
风冰武
1: NSObject+BGModel
@protocol BGProtocol <NSObject>
//如果需要指定 "唯一约束" 字段, 就实现该函数(31行)
+(NSArray* _Nonnull)bg_uniqueKeys;
//设置不需要存储的属性(35行)
+(NSArray* _Nonnull)bg_ignoreKeys;
@end
分类
@interface NSObject (BGModel)<BGProtocol>
//同步存储(82行)
-(BOOL)bg_save;
//异步存储(86行)
-(void)bg_saveAsync:(bg_complete_B)complete;
//同步 存储或更新 数组元素(105行)
//参数1: 存放对象的数组; (数组中存放的是同一种类型的数据)
//注意:
//(1)当"唯一约束" 或 "主键" 存在时, 此接口会更新旧数据, 没有则存储新数据
//(2) "唯一约束" 优先级高于 "主键"
+(BOOL)bg_saveOrUpdateArray:(NSArray* _Nonnull)array;
//同上条件异步(109行)
+(void)bg_saveOrUpdateArrayAsync:(NSArray* _Nonnull)array complete:(bg_complete_B)complete;
//同步查询所有结果(126行)
//参数1:当此参数为nil时, 查询以此类名为表名的数据, 非nil时, 查询以此参数为表名的数据
//提示: 当数据量巨大时, 请用范围接口进行分页查询, 避免查询出来的数据量过大导致程序崩溃
+(NSArray* _Nullable)bg_findAll:(NSString* _Nullable)tablename;
//同上条件异步(130行)
+(void)bg_findAllAsync:(NSString* _Nullable)tablename complete:(bg_complete_A)complete;
//支持keyPath(185行)
//参数1:当此参数为nil时,查询以此类名为表名的数据,非nil时,查询以此参数为表名的数据.
//参数2: 条件参数,可以为nil,nil时查询所有数据.
//where使用规则:
//1.查询name等于爸爸和age等于45,或者name等于马哥的数据. 此接口是为了方便开发者自由扩展更深层次的查询条件逻辑.
//where = [NSString stringWithFormat:@"where %@=%@ and %@=%@ or %@=%@",bg_sqlKey(@"age"),bg_sqlValue(@(45)),bg_sqlKey(@"name"),bg_sqlValue(@"爸爸"),bg_sqlKey(@"name"),bg_sqlValue(@"马哥")];
//2.查询user.student.human.body等于小芳 和 user1.name中包含fuck这个字符串的数据.
//where = [NSString stringWithFormat:@"where %@",bg_keyPathValues(@[@"user.student.human.body",bg_equal,@"小芳",@"user1.name",bg_contains,@"fuck"])];
//3.查询user.student.human.body等于小芳,user1.name中包含fuck这个字符串 和 name等于爸爸的数据.
//where = [NSString stringWithFormat:@"where %@ and %@=%@",bg_keyPathValues(@[@"user.student.human.body",bg_equal,@"小芳",@"user1.name",bg_contains,@"fuck"]),bg_sqlKey(@"name"),bg_sqlValue(@"爸爸")];
+(NSArray* _Nullable)bg_find:(NSString* _Nullable)tablename where:(NSString* _Nullable)where;
//同上条件异步(189行)
+(void)bg_findAsync:(NSString* _Nullable)tablename where:(NSString* _Nullable)where complete:(bg_complete_A)complete;
//支持keyPath(214行)
//参数1: 条件参数, 不能为nil
//where使用规则:
//1.将People类数据中user.student.human.body等于"小芳"的数据更新为当前对象的数据:
//where = [NSString stringWithFormat:@"where %@",bg_keyPathValues(@[@"user.student.human.body",bg_equal,@"小芳"])];
//2.将People类中name等于"马云爸爸"的数据更新为当前对象的数据:
//where = [NSString stringWithFormat:@"where %@=%@",bg_sqlKey(@"name"),bg_sqlValue(@"马云爸爸")];
-(BOOL)bg_updateWhere:(NSString* _Nonnull)where;
//同上条件异步(218行)
-(void)bg_updateAsyncWhere:(NSString* _Nonnull)where complete:(bg_complete_B)complete;
//此接口不支持keyPath(227行)
//参数1: 当此参数为nil时,查询以此类名为表名的数据,非nil时,更新以此参数为表名的数据.
//参数1: 条件参数,不能为nil.
//where的使用规则:
//1.将People类中name等于"马云爸爸"的数据的name更新为"马化腾":
//where = [NSString stringWithFormat:@"set %@=%@ where %@=%@",bg_sqlKey(@"name"),bg_sqlValue(@"马化腾"),bg_sqlKey(@"name"),bg_sqlValue(@"马云爸爸")];
+(BOOL)bg_update:(NSString* _Nullable)tablename where:(NSString* _Nonnull)where;
//支持keyPath(242行)
//参数1: 当此参数为nil时,查询以此类名为表名的数据,非nil时,删除以此参数为表名的数据.
//参数2: 条件参数,可以为nil,nil时删除所有以tablename为表名的数据.
//where使用规则请看demo或如下事例:
//1.删除People类中name等于"美国队长"的数据.
//where = [NSString stringWithFormat:@"where %@=%@",bg_sqlKey(@"name"),bg_sqlValue(@"美国队长")];
//2.删除People类中user.student.human.body等于"小芳"的数据.
//where = [NSString stringWithFormat:@"where %@",bg_keyPathValues(@[@"user.student.human.body",bg_equal,@"小芳"])];
//3.删除People类中name等于"美国队长" 和 user.student.human.body等于"小芳"的数据.
where = [NSString stringWithFormat:@"where %@=%@ and %@",bg_sqlKey(@"name"),bg_sqlValue(@"美国队长"),bg_keyPathValues(@[@"user.student.human.body",bg_equal,@"小芳"])];
+(BOOL)bg_delete:(NSString* _Nullable)tablename where:(NSString* _Nullable)where;
//同上条件异步(246行)
+(void)bg_deleteAsync:(NSString* _Nullable)tablename where:(NSString* _Nullable)where complete:(bg_complete_B)complete;
//查询该表中有多少条数据(304行)
//参数1: 当此参数为nil时, 查询以此类名为表名的数据条数, 非nil时, 查询以此参数为表名的数据条数
//参数2: 条件参数, 为nil时, 查询所有已tablename为表名的数据条数
+(NSInteger)bg_count:(NSString* _Nullable)tablename where:(NSString* _Nullable)where;
//where的使用规则:
//1: 查询People类中name等于"美国队长"的数据条数.
//where = [NSString stringWithFormat:@"where %@=%@",bg_sqlKey(@"name"),bg_sqlValue(@"美国队长")];
//2.查询People类中user.student.human.body等于"小芳"的数据条数.
//where = [NSString stringWithFormat:@"where %@",bg_keyPathValues(@[@"user.student.human.body",bg_equal,@"小芳"])];
//3.查询People类中name等于"美国队长" 和 user.student.human.body等于"小芳"的数据条数.
where = [NSString stringWithFormat:@"where %@=%@ and %@",bg_sqlKey(@"name"),bg_sqlValue(@"美国队长"),bg_keyPathValues(@[@"user.student.human.body",bg_equal,@"小芳"])];
@end