iOS平臺強大Sqlite操做引擎開源庫

前言

首先寫這篇文章以前自我介紹一下,我叫吳海超(WHC)在iOS領域有豐富的開發架構經驗Github之後我也會以文章的形式分享具備實戰意義的文章給你們,但願可以給你們有所幫助。git

主題

這期我想給你們講講iOS中的數據存儲,目前數據庫存儲有Sqlite,CoreData,Realm。github

Sqlite存儲

咱們都知道直接使用Sqlite存儲很麻煩,基本都是模式代碼,大多時候都是複製粘貼,改改字段名稱和類型,可是這種無聊低級的方式會佔用咱們太多調試時間,而且在對數據庫遷移時不方便。sql

CoreData存儲

蘋果爲了規範數據庫存儲這塊推出了模型對象方式存儲CoreData框架,這能讓咱們項目數據層更Model化,讓你們設計程序更有面向對象意識,可是這種方式一樣也很麻煩並且步驟都是模式,時間長了還容易忘,最後要用的時候基本也是複雜粘貼,改改model文件字段名稱和類型。數據庫

Realm存儲

最近Realm很火是開源的,而且支持多個平臺,看介紹看起來很強大,可是我以爲Realm體積太大,集成不是特別方便,一樣使用也有限制,具體你們能夠去官網看看,這裏就不詳細說了。swift

—————————————————————————————————————
上面對目前比較流行的數據存儲方式作了簡介,最後給個人感受都不知足個人要求,要麼使用不夠簡單要麼使用起來不方便,因此我就開始了本身造了WHC_ModelSqlite,最近剛更新。安全

WHC_ModelSqlite介紹

一. 採用runtime和Sqlite完美結合打造的強大數據庫操做引擎開源庫架構

二. 支持數據庫級別加密框架

三. 替代直接使用Sqlite和CoreData以及FMDB低效率方式工具

四. 支持存儲(NSArray,NSDictionary,NSDate,NSData,NSString,NSNumber,
Int,double,float,Bool,char)類型測試

五. 支持模型嵌套模型類存儲到數據庫和多表嵌套聯查

六. 智能數據庫數據遷移機制(動態刪除/添加字段)

七. 全部數據庫操做都是線程安全

八. 真正實現一行代碼操做數據庫

九. 支持model類繼承

十. 支持自定義主鍵名稱

用法

1.存儲嵌套模型對象到數據庫演示

Person * whc = [Person new];
whc.name = @"吳海超";
whc.age = 25;
whc.height = 180.0;
whc.weight = 140.0;
whc.isDeveloper = YES;
whc.sex = 'm';

// 嵌套car對象
whc.car = [Car new];
whc.car.name = @"撼路者";
whc.car.brand = @"大路虎";

// 嵌套school對象
whc.school = [School new];
whc.school.name = @"北京大學";
whc.school.personCount = 5000;

// school對象嵌套city對象
whc.school.city = [City new];
whc.school.city.name = @"北京";
whc.school.city.personCount = 1000;

/// 測試NSArray屬性存儲
Car * tempCar = [Car new];
tempCar.name = @"寶馬";
tempCar.brand = @"林肯";
whc.array = @[@"1",@"2"];
whc.carArray = @[tempCar];

/// 測試NSDictionary屬性存儲
whc.dict = @{@"1":@"2"};
whc.dictCar = @{@"car": tempCar};

[WHC_ModelSqlite insert:whc];複製代碼

2.存儲批量模型對象到數據庫演示

NSArray * persons = [self makeArrayPerson];
[WHC_ModelSqlite insertArray:persons];複製代碼

3.無條件查詢(查詢全部記錄)數據庫中模型類演示

NSArray * personArray = [WHC_ModelSqlite query:[Person class]];複製代碼

4.條件查詢數據庫中模型類演示(where 條件查詢語法和sql where條件查詢語法同樣)

NSArray * personArray = [WHC_ModelSqlite query:[Person class] where:@"name = '吳海超2' OR age <= 18"];複製代碼

5.查詢數據庫並對結果排序

///對person數據表查詢而且根據age自動降序或者升序排序
[WHC_ModelSqlite query:[Person class] order:@"by age desc/asc"];複製代碼

6.查詢數據庫並對結果限制查詢條數

/// 對person數據表查詢而且而且限制查詢數量爲8
[WHC_ModelSqlite query:[Person class] limit:@"8"]; /// 對person數據表查詢而且對查詢列表偏移8而且限制查詢數量爲8 [WHC_ModelSqlite query:[Person class] limit:@"8 offset 8"];複製代碼

7.修改數據庫中模型對象演示(where 條件查詢語法和sql where條件查詢語法同樣)

[WHC_ModelSqlite update:whc where:@"name = '吳海超2' OR age <= 18"];複製代碼

8.刪除數據庫中模型對象演示(where條件查詢爲空則刪除全部)

[WHC_ModelSqlite delete:[Person class] where:@"age = 25 AND name = '吳海超'"];複製代碼

9.清空指定數據庫演示

[WHC_ModelSqlite clear:[Person class]];複製代碼

10.刪除數據庫演示

[WHC_ModelSqlite removeModel:[Person class]];複製代碼

11.刪除全部數據庫演示

[WHC_ModelSqlite removeAllModel];複製代碼

12.獲取數據庫本地路徑演示

NSString * path = [WHC_ModelSqlite localPathWithModel:[Person class]];複製代碼

13.獲取數據庫本地版本號演示

NSString * path = [WHC_ModelSqlite versionWithModel:[Person class]];複製代碼

結束

WHC_ModelSqlite開源地址:github.com/netyouli/WH…

  • 若是您在使用過程當中有任何問題,歡迎issue me!
  • 很樂意爲您解答任何相關問題!
  • 與其給我點star,不如向我狠狠地拋來一個BUG!
  • 若是您想要更多的接口來自定義或者建議/意見,歡迎issue me!我會根據你們的需求提供更多的接口!

也藉此機會推薦閱讀本人其餘優秀開源項目:Github

  1. AutoLayout開源庫:github.com/netyouli/WH…
  2. Json轉Model類Mac工具:github.com/netyouli/WH…
  3. 局部監聽VC自動管理鍵盤:github.com/netyouli/WH…
  4. 掃描iOS/Android項目沒有使用圖片mac工具:github.com/netyouli/WH…
  5. 掃描iOS/Android項目沒有使用的Class工具:github.com/netyouli/WH…

到了這裏很是感謝您的閱讀謝謝!

相關文章
相關標籤/搜索