這篇筆記主要是記錄我在入門Realm時做簡單本地資料庫時遇到的問題以及解決方式
Realm的基本指令可以參照這篇:https://hackmd.io/@gary3123/ByEGeM6oq
使用Cocoapods來新增、管理Realm套件
詳細可以看這篇:https://hackmd.io/@gary3123/rJR8Tldj5
並繼續使用.xcworkspace檔繼續編輯
我們要先新增一個 Swift 檔,裡面就是撰寫 Realm 資料庫格式及資料儲存的型別。
我設定了四項分別是
uuid : String (設定自動產生)
name : String
age : Int
address : String
並把UUID設定成索引主鍵
我們要先去宣告 Cell 的 Label 元件
我建立了一個新的 Swift 檔來存放 Cell 的內容,之後會在顯示 TabelView 的 Function 中用到
回到 ViewController.swift 我們必須先設置 UITableView 委任模式的對象來完善這個 TableView 的內容,先為 ViewController 加上委任需要的協定:
在 viewDidLoad 下面加入 dataSource 、 delegate 來設置委任對象
接下來就是要判段每一次會出現幾個 Cell
我們可以去讀取資料庫的數量來判斷我們要出現幾個 Cell , 因為資料庫內容有可能是無值的狀態,所以我們的realm變數設成可選型別,但function是不能讀取nil的
我就做了 if 判斷的方式
當 realm 是無值的話就 return 0
最後我們要讓他判斷每個 Cell 要顯示的內容
第三行的程式碼主要是取得 tableView 目前使用的 Cell
再將資料庫 table 的內容放到 Cell 內
為了避免 TextField 在無值的情況下按下新增或年齡輸入字串時會出現錯誤,我把主要的運作程式放在 if 判斷裡面
主要程式就是將 TextField 的值放到 Table 資料庫裡面
最後再將 TableView reload 就行了
按下新增的時候再將 TextField 清空
這裡是避免 TableView 沒有選取資料時,按刪除出現的錯誤
一樣把主要運作的程式放在 If 判斷裡面就行了
從第四行開始就是主要運作的程式
先用 indexPathForSelectedRow!.row 判斷我選取的是第幾個 Cell
再將判斷的資料放到 tables 裡變成 tables陣列的索引值並放到 del 變數裡
最後在資料庫裡的資料刪除
編輯的程式和新增的程式很相似
但這裡多了一個程式碼會出錯,必須注意的地方,就是當 TableView 沒有選取資料時,按下編輯,所以我們寫 If 判斷時,要多一個條件
這邊也是利用 indexPathForSelectedRow!.row 判斷我選取的是第幾個 Cell
再取 TextField 的值寫入資料庫裡
最後再將 TextField 的值清空