一、簡介
Realm 并不是基于 Core Data ,也不是基于 SQLite 所構建的卑惜。它擁有自己的數據庫存儲引擎膏执,可以高效且快速地完成數據庫的構建操作。Realm可以輕松地移植到項目當中露久,并且絕大部分常用的功能(比如說插入更米、查詢等等)都可以用一行簡單的代碼輕松完成!目前支持 Objective-C毫痕、Swift 和 Java 三種語言征峦,也就是說能在 iOS、Android 和 Mac 上面跨平臺使用消请。
Realm 使用方面:相比于 SQLite栏笆,Core Data 使用起來更加簡單,更易入門臊泰。
Realm 比使用 SQLite 要快竖伯,比 ORM 要快很多。 簡單因宇。通過標注和對象操作實現數據操作七婴。 版本升級時,數據遷移成本很低察滑。 與 rxjava打厘、retrofit 等 Library 有很好的交互。
Realm 是為移動端開發(fā)定制的全功能數據庫贺辰,可以將原生對象直接映射到 Realm 的數據庫引擎(遠不僅是一個鍵值對的存儲)户盯。
RLMRealm
: RLMRealm
是框架的核心所在,是我們構建數據庫的訪問點饲化,就如同 Core Data 的管理對象上下文( managed object context )一樣莽鸭。出于簡單起見, realm 提供了一個名為 defaultRealm
的單例吃靠,在本教程中我們就僅使用這個單例來完成我們所需的功能硫眨。當然,我們也可以導入外部已經編寫好的 realm 數據庫文件巢块,也可以在我們不需要將數據保存在硬盤上時使用 “ 內存實例對象 ” ( in-memory realm instance )礁阁,此外,還可以同時使用多個數據庫文件族奢。
RLMObject
:這是我們自定義的 realm 數據模型姥闭。創(chuàng)建數據模型的行為將會影響到數據庫的結構。要創(chuàng)建一個數據模型越走,我們只需要繼承 RLMObject
棚品,然后設計我們想要存儲的屬性即可。
關系 (Relationships) :通過簡單地在數據模型中聲明一個 RLMObject
類型的屬性,我們就可以創(chuàng)建一個 “ 一對多 ” 的對象關系铜跑。同樣地门怪,借助 RLMArray
我們還可以創(chuàng)建 “ 多對一 ” 和 “ 多對多 ” 的關系。
寫操作事務 (Write Transactions) :數據庫中的所有操作疼进,比如創(chuàng)建、編輯秧廉,或者刪除對象伞广,都必須在事務中完成。 “ 事務 ” 是指位于 beginWriteTransaction()
以及 commitWriteTransaction()
操作之間的代碼段疼电。
查詢 (Queries) :要在數據庫中檢索信息嚼锄,我們需要用到 “ 檢索 ” 操作。檢索最簡單的形式是對 RLMObject
對象發(fā)送 allObjects()
消息蔽豺。如果需要檢索更復雜的數據区丑,那么還可以使用斷言( predicates )、復合查詢以及結果排序等等操作修陡。
RLMResults
:這個類是執(zhí)行任何查詢請求后所返回的類沧侥,其中包含了一系列的 RLMObjects
對象。和 NSArray
類似魄鸦,我們可以用下標語法來對其進行訪問宴杀,并且還可以決定它們之間的關系。不僅如此拾因,它還擁有許多更強大的功能旺罢,包括排序、查找等等操作绢记。
二扁达、使用
1.引入
(1)導入方式一:CocoaPods
在 Podfile 中,添加 pod 'Realm'
(2)手動導入
下載 Realm 的最新發(fā)布版本蠢熄,并解壓跪解;
將 Realm.framework 從 ios/static/ 文件夾拖曳到項目中;
在 Xcode 文件導航器中選擇您的項目签孔,然后選擇您的應用目標惠遏,進入到 ** Build Phases** 選項卡中。在 Link Binary with Libraries 中單擊 + 號然后添加 libc++.tbd 以及 libz.tbd骏啰。
存取的對象都要繼承自RLMObject
节吮,創(chuàng)建時可以如下選擇: