TestsTested | ✗ |
LangLanguage | Objective C++Objective C++ |
License | MIT |
ReleasedLast Release | Dec 2017 |
Maintained by JackJin.
To run the example project, clone the repo, and run pod install
from the Example directory first.
WCDB
基础之上进行再次封装,需要瞒住版本:iOS 7.0
及其之后版本Xcode 8.0
及其之后版本Model
和 调用的类需要 Objective-C++
LRTSSQliteManager
是基于第三方开源库 WCDB
之上来进行解决在数据操作过程中使用大量胶水代码和防止反注入问题,在使用时需要在项目中加入 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 is available under the MIT license. See the LICENSE file for more info.