今天會分享如何搭配 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!)")
選取後,開啟檔案位置
開啟後畫面如下
明天會介紹:
敬請期待!