iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 29
0

RealmSwift

今天要介紹 Realm 的 CRUD ,也就是新增、讀取、修改、刪除的基本操作

延續昨天的,打開 .xcworkspace 檔,並 import RealmSwift
https://ithelp.ithome.com.tw/upload/images/20201005/20129677sumUiV5kDd.png
一開始會出現錯誤,因為專案還沒有讀取到 RealmSwift 的檔案,所以直接按 Command + B ,這樣錯誤就會消失

第一次的 Build 時間會比較久是正常的
https://ithelp.ithome.com.tw/upload/images/20201005/20129677iBJdP0TX7S.png

完成後錯誤就消失了
https://ithelp.ithome.com.tw/upload/images/20201005/20129677qJLbBfyDnv.png

新增物件檔,選擇 Cocoa Touch Class
https://ithelp.ithome.com.tw/upload/images/20201005/20129677xCB1tgSCr8.png

Subclass of 輸入 Object
https://ithelp.ithome.com.tw/upload/images/20201005/20129677tkdP1Vg9zv.png

完成後再 import RealmSwift
https://ithelp.ithome.com.tw/upload/images/20201005/20129677d76tFsM6um.png

再來輸入以下程式碼, classA 和 classB 就是 Data 物件的欄位
https://ithelp.ithome.com.tw/upload/images/20201005/20129677D7lLMehNXu.png
primary key 就是物件的主鍵,不能重複存在
UUID 是電腦自動生成的亂碼

回到 ViewController 輸入以下程式碼

class ViewController: UIViewController {
    
    let realm = try! Realm()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        printDataBase()
    }
    
    @IBAction func createBtnClick(_ sender: UIButton) {
        let result = Data()
        
        // 填入欄位資料
        // 像UUID及Date這種會自動生成的資料,在這裡可以不用給
        // Optional 及有預設初始值的也不一定要給值
        result.value = "Hi"
        
        try! realm.write {
            realm.add(result)
        }
    }
    
    @IBAction func readBtnClick(_ sender: UIButton) {
        printDataBase()
    }
    
    @IBAction func updateBtnClick(_ sender: UIButton) {
        // 確認資料庫是有資料的
        guard realm.objects(Data.self).count != 0 else { print("nil"); return }
        
        let primaryKey = realm.objects(Data.self)[0].id // 指定資料庫的第零比資料
        
        // 透過forPrimaryKey選擇需要改動的資料
        let result = realm.object(ofType: Data.self, forPrimaryKey: primaryKey)
        
        try! realm.write {
            result?.value = "Bye"
        }
    }
    
    @IBAction func deleteBtnClick(_ sender: UIButton) {
        // 確認資料庫是有資料的
        guard realm.objects(Data.self).count != 0 else { print("nil"); return }
        
        let primaryKey = realm.objects(Data.self)[0].id // 指定資料庫的第零比資料
        
        // 透過forPrimaryKey選擇需要改動的資料
        let result = realm.object(ofType: Data.self, forPrimaryKey: primaryKey)
        
        try! realm.write {
            realm.delete(result!)
        }
    }
    
    func printDataBase() {
        // 確認資料庫是有資料的
        guard realm.objects(Data.self).count != 0 else { print("nil"); return }
        
        realm.objects(Data.self).forEach { (data) in
            print("\(data.id) , \(data.value ?? "nil")")
        }
        
        print("=========================================")
    }
}

我在頁面中加入了四個 Button 分別是新增、讀取、修改及刪除第一筆資料
https://ithelp.ithome.com.tw/upload/images/20201005/20129677IzbstEXZl3.png


上一篇
Day28 CocoaPods
下一篇
Day30 RealmSwift
系列文
IOS Beginner's 30days 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言