【iOS分享之路-快速開發電商平臺】四、數據存儲工具封裝;

duwenquan-方形LOGO.png

引述

APP登錄后,首先返回的莫過于用戶的信息,通常情況下,我們會將這部分數據保存到本地,能夠在我們想用到用戶信息的地方很容易的就獲取到,而不用再通過接口獲取,這樣能夠使程序運行的更流暢。iOS開發中提供了幾種數據本地化的方式,每一種都有各自的優缺點,每個開發者也會根據自己的喜好,數據量的大小使用不同的數據本地化的方式。下面我羅列一些iOS開發經常用的數據本地化方式,然后再為各位讀友奉上我基于FMDB封裝的數據本地化工具。
???常用數據:本地化存儲方式:

  • NSKeyedArchiver:

采用歸檔的形式來保存數據,該數據對象需要遵守NSCoding協議,并且該對象對應的類必須提供encodeWithCoder:和initWithCoder:方法。前一個方法告訴系統怎么對對象進行編碼,而后一個方法則是告訴系統怎么對對象進行解碼。

  • NSUserDefaults:

用來保存應用程序設置和屬性、用戶保存的數據。用戶再次打開程序或開機后這些數據仍然存在。NSUserDefaults可以存儲的數據類型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary。如果要存儲其他類型,則需要轉換為前面的類型,才能用NSUserDefaults存儲。

  • Write寫入方式:永久保存在磁盤中。

具體方法為:
第一步:獲得文件即將保存的路徑
第二步:生成在該路徑下的文件
第三步:往文件中寫入數據
最后:從文件中讀出數據

  • SQLite:采用SQLite數據庫來存儲數據。

SQLite作為一中小型數據庫,應用ios中,跟前三種保存方式相比,相對比較復雜一些。所以本文的重點【FMDB】也應運而生,FMDB是一種第三方的開源庫,FMDB就是對SQLite的API進行了封裝,加上了面向對象的思想,讓我們不必使用繁瑣的C語言API函數,比起直接操作SQLite更加方便。然而,使用FMDB依然需要些SQL語句,所以我基于FMDB做了封裝,簡化了數據庫的操作。

DWQDBManger:

由于本人之前做過一段時間的DBA,編寫過大量的存儲過程和SQL腳本,多表查詢,左連接,有連接,自然連接,笛卡爾積,游標,索引等等,所以能夠熟練編寫各類SQL語句。所以在本地化數據存儲中,我通常會用SQLite來做數據本地化。然而很多iOS開發者對SQL語句并不是很熟悉,所以會放棄使用這種方式。FMDB的出現,又讓一部分開發者選擇使用SQLite。最后,我對FMDB進行了封裝,極大簡化開發者對數據庫的操作,與多數FMDB封裝不同,本封裝是直接實體類對象來做增、刪、改、查。代碼中有比較詳細的注釋和講解,本封裝利用了runtime的機制,可以幫助初學者理解objective-c的黑魔法:runtime。

使用方法:

1.首先將DWQDBManger文件夾拖入工程中【注意:文件夾已經包含了FMDB】。
2.加入依賴庫libsqlite3.tbd

454BDD40-2B16-42F0-9169-CA8D09F6AE62.png

3.假如我們需要本地化的數據為用戶信息,那么首先創建UserInfo,繼承自DWQDBModel,如圖所示,然后聲明屬性,UserInfo就相當于【表名】,聲明的屬性就相當于【字段】。對應需要存儲的一些信息。


18AF03AB-36BB-4A67-A7E1-D6DFBEA2EBDB.png

4.然后在PCH文件中,引入頭文件“UserInfo.h”
5.以登錄成功后返回用戶信息需要本地化為例子,實例化一個UserInfo對象

UserInfo *userInfo=[[UseInfo alloc] init];

然后給對象聲明的屬性進行賦值,最后調用save方法保存數據;示例代碼為:

    NSDictionary * dict=responseObject[@"data"];
    userInfo.create_time=dict[@"create_time"];
    userInfo.id_card=dict[@"id_card"];
    userInfo.is_partner=dict[@"is_partner"];
    userInfo.member_avatar=dict[@"member_avatar"];
    userInfo.member_id=dict[@"member_id"];
    userInfo.member_name=dict[@"member_name"];
    userInfo.member_status=dict[@"member_status"];
    userInfo.partner_status=dict[@"partner_status"];
    userInfo.password_is_null=dict[@"password_is_null"];
    userInfo.spare_money=dict[@"spare_money"];
    userInfo.sex=dict[@"sex"];
    //插入到數據庫中需要調用的方法
    [self.accountInfo save];

6.查詢-或者叫從數據庫中取數據。

a.每次登錄成功就會向表中插入一行數據,我們想獲取最新的數據,只能取最后一行數據,方法可以通過調用findAll返回的數組判斷個數,然后再通過主鍵查詢 + (instancetype)findByPK:(int)inPk;
b.其次還可以用每次插入表中數據之前清空一次表就可以了。然后調用 【userInfo findByPK:1】就可以獲取到用戶信息了。示例代碼如下

1.首先在每一次插入數據之前調用類方法清空數據的方法
[UserInfo clearTable]
2.然后再插入數據,上方第5步
3.最后在需要獲取數據的地方使用即可
  UserInfo *user=[UserInfo findByPK:1];
  NSString *mid= user.member_id

更多使用方法請詳細查看DWQDBModel.h文件,不再一一列舉。

GitHub 上Demo下載地址

GitHubDemo
記的在GItHub上個Star噢~~~~~~~!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,196評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,688評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,654評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,456評論 6 406
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,955評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,195評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,725評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,608評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,802評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,048評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,422評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,673評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,424評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,762評論 2 372

推薦閱讀更多精彩內容