iOS開發簡記(8):數據持久化

數據持久化,也就是把數據保存到磁盤,之後能夠再讀取出來使用(也能夠再次更改或刪除)。不少場景須要數據持久化,好比爲了減輕服務器的訪問與存儲壓力,客戶端須要在本地作一些數據持久化的工做。git

iOS的數據持久化,有幾種方式,包括:自定義格式的文件、plist、CoreData、FMDB等等。github

這裏記錄基於CoreData的開源項目MagicalRecord的使用。通過封裝,magicalrecord已經不須要接觸到sql語句的編寫。sql

(1)安裝

小程仍是使用cocoapods來安裝,只須要在Podfile中增長:數據庫

pod 'MagicalRecord'xcode

pod 'MagicalRecord/CocoaLumberjack'服務器

而後在Podfile所在目錄,執行命令pod install便可安裝。安裝完畢,在目標項目,能夠看到magicalrecord的影子:
app

(2)使用

magicalrecord的讀寫操做,使用上依賴於context,至關於先在context上操做,以後才持久化(這一步不須要讀者考慮)。iphone

context的獲取與建立有一系列的函數,其中,[NSManagedObjectContext MR_defaultContext]取得默認的context,只能使用於主線程;而其它context可使用於非主線程,好比:[NSManagedObjectContext MR_context]。函數

在使用上,若是在主線程操做,甚至能夠忽略對context的使用。ui

另外,須要注意,使用magicalrecord須要建立數據模型,也就是建立表的結構。

舉個例子。

小程須要一張記錄點讚的語音的id的表,只有一個字段,存放語音的id。

先是使用magicalrecord進行數據庫的初始化與清理:

而後,建立這張點贊表的數據模型,按下面的截圖操做:


這時會生成新的數據模型的文件,使用時import進頭文件,好比是這樣的一個數據模型(實體類)聲明:

注意,不知道是否是xcode10.0的問題,在編譯的時候會提示錯誤,說有兩個數據模型文件生成一樣的.o,而除了新生成的文件,在這個目錄還會自動生成數據模型文件:/Users/username/Library/Developer/Xcode/DerivedData/ZhiYin-dhvbpzbqjhsnhucuczmcenxfdpqa/Build/Intermediates.noindex/ZhiYin.build/Debug-iphonesimulator/ZhiYin.build/DerivedSources/CoreDataGenerated,小程的解決辦法是,把項目中新生成的文件移除掉(非刪除),便可編譯經過。

這裏只建立了一個實體類,也就是一張表。若是想新建表,那就增長一個Entity,指定屬性(字段),再建立對應的實體類便可。

以後,就可使用這個實體類來進行讀寫操做。

好比,讀取全部記錄:

好比,增長記錄:

好比,刪除記錄:

注意,對於增長、刪除或修改,都須要對context進行保存,而且在指定的context上進行操做,好比:

本文演示的APP的源碼:

https://github.com/crazy0363/sound-show-zhiyin

本APP已上架AppStore,歡迎您使用。地址:https://itunes.apple.com/cn/app/%E5%A4%A9%E6%B6%AF%E4%BD%95%E5%A4%84%E8%A7%85%E7%9F%A5%E9%9F%B3/id1439297254?mt=8&from=groupmessage&isappinstalled=0

或在AppStore搜索「覓知音」或「天涯何處」,下載安裝。

相關文章
相關標籤/搜索