-
Notifications
You must be signed in to change notification settings - Fork 0
FFDB基本使用
Fidetro edited this page Oct 16, 2017
·
5 revisions
因为FFDB
本身就是设计成对象关系型数据库,下面的内容都是基于FFStore
的类写的参考代码
@interface FFStore : NSObject
/** 店铺名字 **/
@property(nonatomic,copy) NSString *name;
/** 店员总数 **/
@property(nonatomic,assign) NSInteger memberCount;
/** 店铺说明 **/
@property(nonatomic,copy) NSString *desc;
/** 店铺地址 **/
@property(nonatomic,copy) NSString *address;
@end
- 增
此时店铺表里没有任何商店,我们去给他插入几条数据
FFStore *aStore = [[FFStore alloc]init];
aStore.name = @"商店A";
FFStore *bStore = [[FFStore alloc]init];
FFStore *cStore = [[FFStore alloc]init];
[aStore insertObject];
[bStore insertObject];
[cStore insertObject];
在调用insertObject
的方法的时候,会将FFStore
所有属性都插入到表中,属性值为nil
的会被转成空字符串@"",避免使用者需要处理null
值的情况
- 删
我们在之前插入了二条没有名字的店铺数据,这时候如果我们要删除,需要先查出这部分数据,再调用deleteObject
方法
NSArray <FFStore *>* storeArray = [FFStore selectFromClassPredicateWithFormat:@"where name = ''"];
for (FFStore *store in storeArray) {
[store deleteObject];
}
或者使用FFDBManager
里的+ (BOOL)deleteFromClass:(Class)dbClass SQLStatementWithFormat:(NSString *)format;
[FFDBManager deleteFromClass:[FFStore class] SQLStatementWithFormat:@"where name = ''"]
- 改
之前插入的商店A的店铺别的信息都没有填,这时候要更新的信息,需要先查出这部分数据,再调用updateObject
方法
NSArray <FFStore *>* storeArray = [FFStore selectFromClassPredicateWithFormat:@"where name = ''"];
for (FFStore *store in storeArray) {
store.memberCount = 1;
store.desc = @"测试用的";
store.address = @"广东";
[store updateObject];
}
如果这次不需要更新desc
字段,可以用- (BOOL)updateObjectSetColumns:(NSArray *)columns;
需要传入你需要更新的字段名字
[store updateObjectSetColumns:@[@"memberCount",@"address"]];
- 查
[FFStore selectFromClassAllObject];//返回表中所有的对象
[FFStore selectFromClassPredicateWithFormat:@""];//条件查询
如果只需要查有多少行数据,可以使用FFDBManager
中的+ (long long int)selectCountfromClasses:(NSArray <Class>*)dbClasses SQLStatementWithFormat:(NSString *)format;
[FFDBManager selectCountfromClasses:@[[FFStore class]] SQLStatementWithFormat:@""];//条件传nil或者空默认返回所有