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

敬请期待!


<<:  Angular ngIf 与 Async Pipe

>>:  Day 24:「Switch 也要换游戏片啦~」- Slot 插槽

谁说低代码平台上就不能写自己的CSS

都已经千辛万苦的学会CSS了,不用用这个技能不是就太浪费了吗? 对,本篇文就是要来看看怎麽在低代码平...

【D5】取得厨房钥匙:下载凭证

前言 当我们已经可以进入shioaji这个厨房,却发现用来烹饪的厨具都锁在架上,我们只能用一些简单的...

Day 25: Macie 简介及操作

What is Amazon Macie? Macie是一项全代管的服务,它透过机器学习来辨别你的S...

[Day28] 平常用不到但又常常需要的缩网址+QRcode产生器

写在前面 除了 Day 01 的 Tobymini 页面管理,可以和同事之间互相分享网页之外, 有时...

COVID-19 literature searching (BM25)文献搜寻-BM25方法

今天选个大资料集,来试试看BM25的语义搜寻。(据说BM25不必先做”断词处理”,说错了,是不必处理...