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

WHC發表於2017-03-07

前言

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

主題

這期我想給大家講講iOS中的資料儲存,目前資料庫儲存有Sqlite,CoreData,Realm。

Sqlite儲存

我們都知道直接使用Sqlite儲存很麻煩,基本都是模式程式碼,大多時候都是複製貼上,改改欄位名稱和型別,但是這種無聊低階的方式會佔用我們太多除錯時間,並且在對資料庫遷移時不方便。

CoreData儲存

蘋果為了規範資料庫儲存這塊推出了模型物件方式儲存CoreData框架,這能讓我們專案資料層更Model化,讓大家設計程式更有物件導向意識,但是這種方式同樣也很麻煩而且步驟都是模式,時間長了還容易忘,最後要用的時候基本也是複雜貼上,改改model檔案欄位名稱和型別。

Realm儲存

最近Realm很火是開源的,並且支援多個平臺,看介紹看起來很強大,但是我覺得Realm體積太大,整合不是特別方便,同樣使用也有限制,具體大家可以去官網看看,這裡就不詳細說了。

—————————————————————————————————————
上面對目前比較流行的資料儲存方式做了簡介,最後給我的感覺都不滿足我的要求,要麼使用不夠簡單要麼使用起來不方便,所以我就開始了自己造了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…

到了這裡非常感謝您的閱讀謝謝!

相關文章