iT邦幫忙

2021 iThome 鐵人賽

DAY 14
0
Mobile Development

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

DAY 14 『 Realm 新增、修改、刪除 』Part2

  • 分享至 

  • xImage
  •  

昨天分享如何拉 @IBOutlet、按空白處收回鍵盤、struct 結構的撰寫、Realm 環境安裝
今天會介紹:

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

  • 更新tableview
func reloadData(){
    users = []
    let alluser = realm.objects(Datas.self)
    // 當資料庫資料數為0時,也要執行表格重新整理的部分
    guard alluser.count > 0 else { tableView.reloadData(); print("nil"); return }
    for i in 1...alluser.count{
        users.append(SetUser(setuserName: alluser[i-1].name, setuserAge: String(alluser[i-1].age)))
    }
    tableView.reloadData() // 重新載入 tableView
}

在 override func viewDidLoad() 底下加上reloadData()

  • 新增資料
@IBAction func inputData(_ sender: UIButton) {
    let input: Datas = Datas()
    // 若 Age > 0 且 Name 不為空值
    if Int(ageTextField.text!) ?? 0 > 0 && (nameTextField.text != nil){
        input.name = nameTextField.text ?? ""     // name
        input.age = Int(ageTextField.text!) ?? 0 // age
        try! realm.write {realm.add(input)}  // 新增資料
    }
    else{ alertTrigger();print("輸入的資料有誤!") }
    reloadData() // 更新 TableView
}

  • 刪除資料
@IBAction func deleteData(_ sender: UIButton) {
    let delete = realm.objects(Datas.self)
    // 若刪除的 TextField 值 > 0 且 < 資料庫的資料數+1
    if Int(deleteTextField.text!) ?? 0 > 0 && Int(deleteTextField.text!)! < delete.count+1 {
        // 刪除資料庫資料
        try! realm.write { realm.delete(delete[Int(deleteTextField.text!)!-1]) }
    }
    else{ alertTrigger();print("輸入值有誤!") }
    reloadData() // 更新 TableView
}

  • 修改資料
@IBAction func fixData(_ sender: UIButton) {
    let fixid = realm.objects(Datas.self)
    // 若修改的 TextField 的值不為空值,且資料庫數量 > 0
    if (fixTextField.text != nil) && (fixid.count > 0){
        let fix: Datas = Datas()
        fix.id = "\(fixid[0].id)"        // 原本的 id
        fix.name = fixTextField.text!    // 依 TextField.text 做變化
        fix.age = fixid[0].age           // 原本的年齡
        try! realm.write {realm.add(fix, update: .all)}
    }
    else{ alertTrigger();print("目前沒資料!") }
    reloadData() // 更新 TableView
}

  • 列出資料
@IBAction func findData(_ sender: UIButton) {
    let show = realm.objects(Datas.self)
    if Int(findTextField.text!) ?? 0 > 0 && Int(findTextField.text!)! < show.count+1 && show.count > 0{
        // 在本地端印出資料
        print("name:\(show[ Int(findTextField.text!)!-1].name),age:\(show[Int(findTextField.text!)!-1].age)")
    }
    else{ alertTrigger();print("輸入值有誤") }
}


明天會介紹:

  1. Table View Cell
  2. UITableViewDelegate、UITableViewDataSource、UITextFieldDelegate

敬請期待!


上一篇
DAY 13 『 Realm 新增、修改、刪除 』Part1
下一篇
DAY 15 『 Realm 新增、修改、刪除 』Part3
系列文
ios 的小小實驗室 !30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言