#Task:Part.05–儲蓄心願編列,CoreData儲存

本來預計要先把“近期帳務”完成,但要以每天日期為一個Section顯示在列表時,CoreData讀取遇到了一些困難,目前想不到方法解決😅所以我先來製作和“新增帳務”功能類似的“儲蓄心願編列”。

透過Segue傳值、輸入心願金額、輸入心願名目、選擇日期的做法可以參考#Task:Part.03–新增帳務,點擊Cell展開顯示Picker,其他部分會在以下記錄是如何完成,如果有興趣就一起看下去吧!

每月應存金額

這個欄位是依據目標金額、日期差距而得,由於日期預設為當天沒有差距,所以一開始輸入時每月應存金額等於目標金額,一但調整達成日期就會隨著日期差距計算出每月應存金額。

日期差距可以透過Calendar的dateComponents取得,[.day]會自動算出起始日和截止日的天數,所以最後我用 目標金額 / 日期差距 * 31 計算出每月應存金額。

每月儲蓄進度提醒

尚未製作…預計會用UserNotifications來完成。

建立實體Entity、屬性Attributes

使用CoreData前,需要建立實體和實體的屬性。以下圖為例,實體是Budget,而Budget擁有date、money、name三個屬性,不過屬性的部分在做後續其他功能時可能會有調整。

Entity建立完成之後需要一個Class與它對應存取CoreData,把Codegen設為Class Definition就會自動產生這個類別,但在專案導覽器不會顯示出來,程式使用時可以用右鍵Jump to Definition查看。

儲存

在CoreData中儲存資料需要三個步驟:1.建立實體的物件、2.把物件內容設為PersistentContainer的ViewContext並設定屬性、3.呼叫saveContext()方法將資料存進資料庫。

最後我加了儲存後返回上一頁的效果。

=====

大功告成!“儲蓄心願編列”的所有欄位也都可以正常輸入了,除了每月儲蓄進度提醒🥺。下一篇會紀錄“歷史儲蓄心願”是如何從CoreData中讀取資料,不過還沒製作完整…上帝保佑我🙏🏻🙏🏻🙏🏻

如果有什麼建議歡迎留言~有興趣可以取用我的檔案🙆🏻‍♀️

心願記帳Part.05到這邊結束,我會努力的🙇🏻‍♀️🙇🏻‍♀️🙇🏻‍♀️

未完待續,敬請期待…

--

--