數據持久化,也就是把數據保存到磁盤,之後能夠再讀取出來使用(也能夠再次更改或刪除)。不少場景須要數據持久化,好比爲了減輕服務器的訪問與存儲壓力,客戶端須要在本地作一些數據持久化的工做。git
iOS的數據持久化,有幾種方式,包括:自定義格式的文件、plist、CoreData、FMDB等等。github
這裏記錄基於CoreData的開源項目MagicalRecord的使用。通過封裝,magicalrecord已經不須要接觸到sql語句的編寫。sql
小程仍是使用cocoapods來安裝,只須要在Podfile中增長:數據庫
pod 'MagicalRecord'xcode
pod 'MagicalRecord/CocoaLumberjack'服務器
而後在Podfile所在目錄,執行命令pod install便可安裝。安裝完畢,在目標項目,能夠看到magicalrecord的影子:
app
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搜索「覓知音」或「天涯何處」,下載安裝。