简单易用的数据存储方案
由于依赖于FMDB,以及需要导入sqlite依赖框架,推荐使用CocoPods进行安装
在Podfile文件中添加
pod 'TTLite'
TTLite的建表依赖于需要存储对象的类型
@interface Cast : NSObject
@property (nonatomic, copy) NSString *alt;
@property (nonatomic, assign) int ID;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) BOOL isOk;
@end
在模型实现内,导入#import <TTLite.h>
+ (NSArray *)tt_queryPropertyNames
{
return @[@"ID", @"name", @"isOk"];
}
实现tt_queryPropertyNames
标明模型将要作为查询条件的属性
实现模型的NSCoding
协议,标准模型能够正确的归解档
推荐MJExtension的MJCodingImplementation
宏,一键实现(详见Demo)
TTLite *lite = [TTLite liteWithPath:path storeClass:[Cast class]]
path
参数为数据库文件路径,同一路径下返回的lite实例管理同一数据库,无需建立单例
class
参数为存储对象的类型,根据类型名在数据库中建立t_xxxx
表保存数据,如t_cast
[lite insertObject:cast]; // 单个对象插入
[lite insertObjects:casts]; // 多个对象插入
查询使用的条件是简化版的sql语句,更加直观
[lite queryObjectsWithCondition:@"ID = '123'" result:^(NSArray *result) {
Cast *cast = result.lastObject;
}];
更多查询方式
条件 | 语句 |
---|---|
等于某个值 | ID = '123' |
不等于某个值 | ID != '123' |
大于某个值 | ID > '123' |
小于某个值 | ID < '123' |
且 | ID > '123' and name != 'jack' |
或 | ID > '123' or name != 'jack' |
模糊查询 | name like '%%ac%%' |
[lite deleteObjectWithCondition:@"ID = '123'"];
condition
删除所有符合条件的对象数据
Cast *cast = [[Cast alloc] init];
cast.alt = @"https://google.com";
cast.ID = 112233;
cast.name = nil;
cast.isOk = YES;
[lite updateObject:cast condition:@"ID = '123'"];
object
参数,更新后的对象,需要保证新对象所有属性的正确
condition
更新所有符合条件的对象数据
- (void)queryObjectsWithCondition:(NSString *)condition limit:(NSRange)range orderBy:(NSString *)sortName ascending:(BOOL)asc result:(void (^)(NSArray *resultArray))result;
condition
查询条件
range
筛选符合条件的结果
sortName
用来排序的属性名
asc
升序或降序(默认为升序)
###Help 1.Please commit issues when you encounter bug or expect new function, thanks!
2.Please pull request when you have good idea ^ ^
E-mail: [email protected]