Realm是一個類似於SQLite的跨平台資料庫
我們可以用CocoaPods來管理套件
(關於CocoaPods的基本使用和安裝請參照這裡:https://hackmd.io/@gary3123/rJR8Tldj5)
所以我們要先在CocoaPods裡新增這個套件,需要先新增一個專案檔,並打開終端機cd到專案檔的位置,並初始化CocoaPods,輸入以下指令:
pod install
你會發現專案檔裡多出了一些文件
再來就是要新增Realm套件到CocoaPods裡,請輸入以下指令來編輯Podfile的文件:
vim Podfile
請編輯這個Podfile檔,輸入下圖紅框的文字來新增Realm套件
(按"i"進入insert狀態,改完後按"esc",並輸入":wq"儲存並離開)
退到終端機之後輸入以下指令來install pod的修改
pod install
我們可以先去下載Realm studio
它可以幫助我們可視化的去處理資料去處理的內容:https://www.mongodb.com/docs/realm-legacy/products/realm-studio/index.html
我們必須先創建一個表單類別,並繼承RealmSwift,及建立相關屬性
以下是在ViewController.swift裡寫的範例語法
新增完第一筆資料之後可以用"印出資料儲存位置"的語法來得知儲存資料的路徑
打開Realm studio,匯入儲存資料的文件便可以看到剛剛新增的第一筆資料!
我們可以先用if判斷資料庫裡有沒有資料,再用迴圈將所有資料讀取出來即可。
注意他的資料格式叫做Result < table >
Result本身是一個陣列,裡面放的是table的物件。
但他並非是Array()或是NSArray()這一點要稍微注意。
當你取出資料時,可能需要變動內容再回存。
這裡我將原本是 Amy 的值改成 Cloe
我利用篩選名字叫 " Chloe " 的方式將 name = Chloe 有關的資料刪除了
Ps.realm 還有一個用法是 deleteAll 就是將全部資料刪除,使用前請三思
Realm 的查詢可以使用條件式的方法去查詢資料
用法:
let results = raelm.objects(table.self).filter("age < 20")
這個做法就是找出年齡不滿20歲的使用者資料
搜尋條件的比較一共有以下幾種:
== , <= , < , >= , > , != , BETWEEN
搜尋字串比較的有以下幾種(相當於 mysql 的 like )
== , != , CONTAINS (包含) , ENDSWITH (字串結尾是...) , BEGINSWITH (字串開頭是...)
//字串開頭是 Ga 的所有使用者
let result = realm.objects(table.self).filter("name BEGINSWITH 'Ga'")
//字串結尾是 ry 的所有使用者
let results = realm.objects(table.self).filter("name ENDSWITH 'ry'")
//字串包含a的所有使用者
let results = realm.objects(table.self).filter("name CONTAINS 'a'")
條件式有以下幾種:
AND , OR , NOT
let results = realm.objects(table.self).filter("age < 20 AND name BEGINSWITH 'Ga'")
.sorted() 裡的 ascending 接受的型別是 Bool , true 是正排序,false時為逆排序
//取出資料並將年齡由小排到大
let results = realm.objects(table.self).sorted(byKeyPath: "age")
//取出資料並將年齡由小大排到小
let results = realm.objects(RLM_User.self).sorted(byKeyPath: "age", ascending: false)
下一篇我會用 Realm 做一個簡單的資料庫系統喔!