iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
Mobile Development

ios 的小小實驗室 !系列 第 13

DAY 13 『 Realm 新增、修改、刪除 』Part1

今天會分享如何搭配 Realm 實作出資料管理系統,然後用 TableView 顯示。

成品:


在 Storyboard 上先拉好所需的物件

拉線到 ViewController ( @IBOutlet )

//  inputdata
@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var ageTextField: UITextField!
@IBOutlet weak var inputButton: UIButton!
    
//  deletedate
@IBOutlet weak var deleteTextField: UITextField!
@IBOutlet weak var deleteButton: UIButton!
    
//  fixdata
@IBOutlet weak var fixTextField: UITextField!
@IBOutlet weak var fixButton: UIButton!
    
//  finddata
@IBOutlet weak var findTextField: UITextField!
@IBOutlet weak var findButton: UIButton!
    
@IBOutlet weak var tableView: UITableView!

在 ViewController 檔裡寫一個 struct 函數,用來定義宣告型態

struct SetUser {
    var setuserName : String?
    var setuserAge : String?
    init(setuserName: String, setuserAge:String){
        self.setuserName = setuserName
        self.setuserAge = setuserAge
    }
}

在 ViewController 內加入
var users = [SetUser]()

由於透過 textField 輸入值,因此當模擬器的鍵盤跳出時,會沒有對應的程式使它收起鍵盤,故在 override func viewDidLoad() 底下新增鍵盤收起的功能。

// 按空白處收回鍵盤
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyBoard))

// to Replace "TouchesBegan"
self.view.addGestureRecognizer(tap)

在 override func viewDidLoad() 外新增鍵盤收起的 @objc

// 按空白處收回鍵盤
@objc func dismissKeyBoard() { self.view.endEditing(true) }

寫一個 alert 提示框,用來告知使用者輸入的數值有誤

//  提示框
func alertTrigger(){
    let alertController = UIAlertController(title: "提示", message: "請確認輸入的資料,按確認關閉!", preferredStyle: .alert)
    let confirmAction = UIAlertAction(title: "確認", style: .default, handler: nil)
    alertController.addAction(confirmAction)
    self.present(alertController, animated: true, completion: nil)
}


在撰寫功能前,須先將 Realm 環境裝好,可參考以下連結:

環境裝好後,就可以 import RealmSwift

在 ViewController 內加入
let realm = try! Realm()

在專案底下 New Group / New File / 選 Cocoa Touch Class

在 Datas.swift 檔裡寫資料的儲存格式

import UIKit
import Foundation
import RealmSwift

class Datas: Object {
    @objc dynamic var id = UUID().uuidString // key(設置key可以加快查詢的速度)
    @objc dynamic var name = "" // 姓名
    @objc dynamic var age = 0 // 年齡
    
    override static func primaryKey() -> String? {
        return "id"
    }
}

在 ViewController 的 override func viewDidLoad() 底下 print 出資料庫位置
print("fileURL: \(realm.configuration.fileURL!)")

選取後,開啟檔案位置

開啟後畫面如下


明天會介紹:

  1. 新增、修改、刪除、印出 Realm 資料庫的資料
  2. 讀取 Realm 資料庫的資料去更新 TableView

敬請期待!


上一篇
DAY 12『 利用安裝套件管理工具 ( CocoaPods ) 下載資料庫( Realm Studio ) 』
下一篇
DAY 14 『 Realm 新增、修改、刪除 』Part2
系列文
ios 的小小實驗室 !30

尚未有邦友留言

立即登入留言