接下來進行新增股票的 StockRecordInputView 和 RecordStore 的組裝。SettlementRemindInputView 中加入這三個 func
// SettlementRemindInputView.swift
let dateUtility: DateUtility = .init()
/// 將畫面上的資料轉換成 StockTradingRecord data model
private func getRecord() -> StockTradingRecord {
return store.getRecord(stockID: stockID,
stockName: stockName,
tradingSide: tradingSide,
tradingShares: Int(tradingShares) ?? 0,
tradingAmount: Int(tradingAmount) ?? 0,
tradingDateStr: dateUtility.getString(from: tradingDate))
}
/// 將 rcord 加進 store 裡面
private func add(_ record: StockTradingRecord) {
store.add(record)
}
/// 把 record 加進 store 和 dismiss 組裝起來
private func storeRecordAndDismiss() {
let record = getRecord()
add(record)
dismiss()
}
然後,將 button 發動的 closure 中加入record store 和 dismiss 的連動
Button {
print("add did tap")
/// 當 add 按鈕被按了後,將畫面上的 record 記錄在 store 裡面,並 dismiss()
storeRecordAndDismiss()
} label: {
Text("新增")
.frame(minWidth: 140, minHeight: 40)
.border(.blue)
}
然後我們試著加一筆股票交易紀錄
在畫面上,看到一筆紀錄。
不過,如果再重新打開 app,紀錄都會不見,因為我們並沒有把紀錄存在可長期紀錄的元件。
所以下一篇,我們就來實作將資料存在 UserDefaults 的物件,而且也會提到 UserDefaults 的測試方法
https://developer.apple.com/documentation/swiftui/restoring_your_app_s_state_with_swiftui