#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到這邊結束,我會努力的🙇🏻♀️🙇🏻♀️🙇🏻♀️
未完待續,敬請期待…