大綱
- 介紹
- 前置作業
- Realm Browser
- 新增、查詢資料
介紹
Realm 是個跨平台的資料庫,目前支援的語言包括 Java、Swift、ObjectC、JavaScript 等等。
而新手在剛接觸 swift 資料庫時, Realm 常會被拿來和 SQLite 做比較,簡單來說,兩者差別在於:
Realm
- 優點:入門門檻較低,適合初學者。
- 缺點:因必須透過自有的引擎轉換語法,固效能上不及 SQLite。
SQLite
- 優點:效能遠大於 Realm,適合較大型的專案使用。
- 缺點:入門門檻相對較高,因必須熟知 SQL 語法,及 ios 的對應框架
前置作業
開啟終端機輸入指令安裝 Cocoapods
$ sudo gem install cocoapods
接著我們新增一個新的 Xcode 專案,並回到終端機,在專案根目錄下輸入下列指令創建一個 Podfile 文件
$ pod init
用 Vim 開啟 Podfile 文件,加入以下字段
pod 'RealmSwift'
加入後如下:
回到專案跟目錄下輸入安裝 Realm 的指令
pod install
完成
Realm Browser
我們除了可以用 print 的方式印出資料庫的內容外,也可以下載 Realm Browser 工具,幫助我們視覺化的管理資料。
下載方式也非常簡單,至 Apple Store 搜尋 Realm Browser 即可!
新增、查詢資料
- 新增資料
- 創建一個訂單類別,並繼承 RealmSwift,及建立相關屬性
import UIKit import RealmSwift import Foundation class Order : Object{ @objc dynamic var id = UUID().uuidString @objc dynamic var name = "" @objc dynamic var price = 0 @objc dynamic var date = Date() override static func primaryKey() -> String? { return "id" } }
- 在 ViewController.swift 的 viewDidLoad() 下加入以下語法
let realm = try! Realm() // 生成訂單 let NewOrder: Order = Order() NewOrder.name = "MacBook Pro 2017 " // 訂單名稱 NewOrder.price = 47000 // 訂單金額 try! realm.write { // 新增資料 realm.add(NewOrder) } print("fileURL: \(realm.configuration.fileURL!)") // 印出資料庫的位址
- 執行,我們可以用 Realm Browser 查看資料庫,開啟印出的位置