要运行示例项目,克隆仓库,并首先从 Example 目录中运行 `pod install`。
WCDB
进行二次封装,需要支持版本:iOS 7.0
及其之后版本Xcode 8.0
及其之后版本Model
和调用的类需要 Objective-C++
LRTSSQliteManager
是基于第三方开源库 WCDB
进行优化,解决了在数据操作过程中使用大量拼接代码和防止 SQL 注入问题。在使用时,需要在项目中引入 WCDB
第三方开源库代码。
CocoaPods
来进行安装:在基础接口中包括常用的数据操作的增、删、改和查。详细的接口内容可以参考:LRTSOperation.h
Model
实现数据绑定在 Model 数据绑定需要三个文件:
BookDetail.h
、BookDetail.m
和BookDetail+WCTTableCoding
BookDetail.h
数据解析#import <Foundation/Foundation.h>
#import "LRTSDBModel.h"
//Model 继承与 LRTSDBModel
@interface BookDetail : LRTSDBModel
@property(assign, nonatomic) NSInteger bookID;
@property(strong, nonatomic) NSString *bookName;
@property(strong, nonatomic) NSDate *upLoad;
@property(copy, nonatomic) NSString *pubilsher;
//WCDB_PROPERTY(BookDetail);
@end
BookDetail.m
属性综合#import "BookDetail.h"
#import <WCDB/WCDB.h>
@implementation BookDetail
//数据库名字的 WING 绑定
WCDB_IMPLEMENTATION(BookDetail)
//Model 类中属性 WING 到表中列名
WCDB_SYNTHESIZE(BookDetail, bookID)
WCDB_SYNTHESIZE(BookDetail, bookName)
WCDB_SYNTHESIZE(BookDetail, upLoad)
WCDB_SYNTHESIZE(BookDetail, pubilsher)
//Model 类中属性 WING 到数据表中重命名
WCDB_SYNTHESIZE_COLUMN(BookDetail, pubilsher, @"出版")
//设置 bookID 为 UNIQUE
WCDB_UNIQUE(BookDetail, bookID)
@end
BookDetail+WCTTableCoding
属性声明#import "BookDetail.h"
#import <WCDB/WCDB.h>
@interface BookDetail (WCTTableCoding)<WCTTableCoding>
//属性声明的绑定
WCDB_PROPERTY(bookID)
WCDB_PROPERTY(bookName)
WCDB_PROPERTY(upLoad)
WCDB_PROPERTY(pubilsher)
@end
LRTSOperation
接口使用//定义创建数据库的名字:lazyAudioPlayer.db
#define LAZY_AUDIO_PLAYER @"lazyAudioPlayer"
@interface LRTSDBOperation ()
@property (nonatomic, strong) LRTSOperation *operation;
@property (nonatomic, strong) BookDetail *bookDetail;
@end
//Lazy Loading Operation 的操作
//创建数据库 lazyAudioPlayer.db,默认创建地址:Documents/
- (LRTSOperation *)operation {
if (!_operation) {
_operation = [[LRTSOperation alloc] initWCDBWithName:LAZY_AUDIO_PLAYER];
}
return _operation;
}
//Lazy Loading BookDetail 书籍详细 Model
- (BookDetail *)bookDetail {
if (!_bookDetail) {
_bookDetail = [[BookDetail alloc] init];
}
return _bookDetail;
}
//创建 BookDetail ROM 绑定的 Table 表,默认表明是:BookDetail
[self.operation createTableWithDBModel:self.bookDetail];
// model 是 BookDetail 实例化的对象
[self.operation insertOrReplaceObject:model into:NSStringFromClass(BookDetail.class)];
// BookDetail.bookID 是删除的条件
[self.operation deleteObjectsFromTable:NSStringFromClass(BookDetail.class) where:BookDetail.bookID == bookId];
//BookDetail.bookName 是要更新的字段
//model 是要更新内容的实例化变量
//BookDetail.bookID 是更新在具体的字段
[self.operation updateRowsInTable:NSStringFromClass(BookDetail.class) onValue:BookDetail.bookName withObject:model where:BookDetail.bookID == bookId];
//BookDetail.bookID 需要查找的条件
[self.operation getObjectsForTable:NSStringFromClass(BookDetail.class) where:BookDetail.bookID == bookId];
//{BookDetail.bookName.inTable(nameBookDetail), Book.autor.inTable(nameBook)} 获取数据的列数
//@[nameBook, nameBookDetail] 获取内容来自的表格
//Book.bookID 来自查找的条件
NSString *nameBookDetail = NSStringFromClass(BookDetail.class);
NSString *nameBook = NSStringFromClass(Book.class);
[self.operation selectRowsOnResults:{BookDetail.bookName.inTable(nameBookDetail), Book.autor.inTable(nameBook)} fromTables:@[nameBook, nameBookDetail] where:Book.bookID == 1000];
boilwater, [email protected]
LRTSSQliteManager 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。