記帳App|Part1. 記憶體資料存取

儲存、讀取記憶體資料,Computed Observer/Computed Property

因平時沒使用記帳app的習慣,找了線上幾款記帳APP參考並模擬做出主要功能,好處是節省了構思畫面的時間,當然也把所有時間都栽在了程式功能呈現裡。

ABOUT APP

紀錄收入及支出,並將資料儲存於記憶體(包含新增、修改、刪除功能),顯示當日紀錄資料,及所有資料圖表數據化。
*於6/3更新將資料存於CoreData,在文章 Part5,連結在本文末。

主頁面: 皆使用 Navigation Controller
記帳本/輸入資料/圖表分析

次頁面:
支出類別選擇 /帳號選擇 / 顯示收據照片

APP 架構

記憶體資料存取 #Data Container

可寫入的資料為:數字,Data,Dictionary,Array,Date,字串,URL。

🌟 檔案儲存路徑
Data Container 資料可修改 FileManager.default.urls
Bundle Container 資料唯讀,不可修改 Bundle.main.url

🌟 儲存資料至記憶體
將自訂型別使用 JSONEncoder() 編碼成 Data,並.write寫入

🌟 讀取記憶體資料
將 Data 使用 JSONDecoder() 解碼成 自訂型別

APP 實作

使用 Computed Observer 觀察 當資料變動時執行存檔。
即不需每次資料變動時,都要手動寫入存檔,而導致有地方遺漏沒寫到。

var allExpenseItems = [ExpenseData]() {
didSet {
ExpenseData.saveExpenseData(expenseDatas: allExpenseItems)
}
}

當讀取畫面時,讀取資料。

override func viewDidLoad() {
super.viewDidLoad()
if let allItems = ExpenseData.loadExpenseDatas(){
self.allExpenseItems = allItems
}
updateUI()
}

--

--