iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
Mobile Development

從零開始的IOS開發日常系列 第 5

[鐵人賽 Day 05] Swift Realm基本用法

  • 分享至 

  • xImage
  •  

什麼是Realm?

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

Realm studio

我們可以先去下載Realm studio
它可以幫助我們可視化的去處理資料去處理的內容:https://www.mongodb.com/docs/realm-legacy/products/realm-studio/index.html

建立、新增、查詢資料

我們必須先創建一個表單類別,並繼承RealmSwift,及建立相關屬性

1. 新增

以下是在ViewController.swift裡寫的範例語法

新增完第一筆資料之後可以用"印出資料儲存位置"的語法來得知儲存資料的路徑

打開Realm studio,匯入儲存資料的文件便可以看到剛剛新增的第一筆資料!

2. 讀取資料

我們可以先用if判斷資料庫裡有沒有資料,再用迴圈將所有資料讀取出來即可。
注意他的資料格式叫做Result < table >
Result本身是一個陣列,裡面放的是table的物件。
但他並非是Array()或是NSArray()這一點要稍微注意。

3. 更新資料

當你取出資料時,可能需要變動內容再回存。
這裡我將原本是 Amy 的值改成 Cloe

4. 刪除資料

我利用篩選名字叫 " Chloe " 的方式將 name = Chloe 有關的資料刪除了
Ps.realm 還有一個用法是 deleteAll 就是將全部資料刪除,使用前請三思

5. 查詢

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'")

6. 排序

.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 做一個簡單的資料庫系統喔!


上一篇
[鐵人賽 Day 04] Swift 用 XIB 編寫 IOS
下一篇
[鐵人賽 Day 06] Swift Realm 簡單資料庫
系列文
從零開始的IOS開發日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言