首先寫這篇文章以前自我介紹一下,我叫吳海超(WHC)在iOS領域有豐富的開發架構經驗Github之後我也會以文章的形式分享具備實戰意義的文章給你們,但願可以給你們有所幫助。git
這期我想給你們講講iOS中的數據存儲,目前數據庫存儲有Sqlite,CoreData,Realm。github
咱們都知道直接使用Sqlite存儲很麻煩,基本都是模式代碼,大多時候都是複製粘貼,改改字段名稱和類型,可是這種無聊低級的方式會佔用咱們太多調試時間,而且在對數據庫遷移時不方便。sql
蘋果爲了規範數據庫存儲這塊推出了模型對象方式存儲CoreData框架,這能讓咱們項目數據層更Model化,讓你們設計程序更有面向對象意識,可是這種方式一樣也很麻煩並且步驟都是模式,時間長了還容易忘,最後要用的時候基本也是複雜粘貼,改改model文件字段名稱和類型。數據庫
最近Realm很火是開源的,而且支持多個平臺,看介紹看起來很強大,可是我以爲Realm體積太大,集成不是特別方便,一樣使用也有限制,具體你們能夠去官網看看,這裏就不詳細說了。swift
—————————————————————————————————————
上面對目前比較流行的數據存儲方式作了簡介,最後給個人感受都不知足個人要求,要麼使用不夠簡單要麼使用起來不方便,因此我就開始了本身造了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…
也藉此機會推薦閱讀本人其餘優秀開源項目:Github
到了這裏很是感謝您的閱讀謝謝!