Episode 107 — 練習使用 Core Data

Shien
彼得潘的 Swift iOS / Flutter App 開發教室
5 min readAug 18, 2022

操作步驟

在開啟新專案後勾選 Use Core Data

進入專案後在左手邊選 Core_Data_Demo,在下面找到 Add Entity 新增一個表格

先將 Entity 改成適當的名稱,然後按加字鍵新增屬性,最後在每個屬性更改屬性名稱及型態。

點選 Entity 後在 Codegen 選擇 Manual/None

建立完 Entity 後工具列找到 Editor,選擇 Create NSManagedObject Subclass

完成建造 subclass 後可以看到有兩個檔案生成

回到 Storyboard 建造一個購物清單,嵌入一個 table view 到 view controller 裡。建立一個新的 table view cell,在 cell 中嵌入兩個 label 個代表物品名稱及價格。嵌入一個 Navigation Controller 後在右上角新增一個加字號的Navigation Bar Button 用來新增物件。

建立物件的變數

利用剛剛宣告的變數,建利 table view 的 row 數量及 cell 內容。

從 ApplicationDelegate 中的 persistentContainer 中取得 viewContext,這個 viewContext 將會是跟資料庫溝通的幕後功臣。

viewContext 有一個 save 方法能夠將自料存到資料庫裡,要使用 do-catch 語法去抓丟出的錯誤。

遵從 CRUD 定律整理資料

create — 在新增物件時,呼叫ShoppingItem 伴隨 context 參數的初始,就用一開始在 AppDelegate 取得的 viewContext 作為參數。 將各個屬性傳入該物件的屬性中,並存入資料庫中。

read — 利用 context 的 fetch 方法,參數傳入 ShoppingItem 物件的 fetchRequest 方法,即可從資料庫讀取該類別的資料。

update — ShoppingItem 是 reference type,改變原本既有的資料屬性在儲存及可存入資料庫中。

delete — 利用 viewContext 的 delete 方法傳入指定物件為參數,即可刪掉資料庫中的指定資料。

以 create 為例 ,從加字號 Button 建立一個 IBAction,會顯示一個帶有兩個 text fields 的小視窗。該視窗的確定按鈕會儲存兩個 text fields 裡的文字到物件的兩個屬性裡。其他三種功能也是在適當的時機下使用它們,記得都要 reload table view,畫面才會更新。

--

--