iT邦幫忙

2021 iThome 鐵人賽

1
Mobile Development

使用 Swift 和公開資訊,打造投資理財的 Apps系列 第 36

D35 - 用 Swift 和公開資訊,打造投資理財的 Apps { 台股申購功能擴充 - 日曆 }

  • 分享至 

  • xImage
  •  

前一篇有些股票資料的收盤價,顯示的是 "-",但如果去查其他下單軟體,是有收盤價的。而這些股票是在上櫃資料裡面。而前一份的來源,只有上市股票。

上市資料

https://www.twse.com.tw/exchangeReport/STOCK_DAY_ALL?response=open_data

上櫃資料

https://www.tpex.org.tw/web/stock/aftertrading/otc_quotes_no1430/stk_wn1430_result.php?l=en-us&se=EW&o=data

因為做法首前面都有,這邊就請讀者自行發揮了,把資料下載的網址換掉,就可以了。

這一篇介紹的是日曆 UI 套件。

https://ithelp.ithome.com.tw/upload/images/20211015/20140622bMIInQ3C0n.jpg

在台股申購日曆的第二個頁籤,有日曆頁面,這個 UI 元件用手刻當然也是可以,但在個人 side project 上,我習慣用現成的 UI 套件去處理想做的需求。但如果是工作的開發專案,才會傾向去寫自己的 UI 元件。因為自己的專案,自己可以改需求,但工作上,不是每個需求都能談到能符合可直接使用的元件。如果最後還是要改 UI 元件,那自己寫的風險,可能會比下載套件程式碼後修改來的安全。

這個套件是 FSCalendar,可以在下方 github 上找到

https://ithelp.ithome.com.tw/upload/images/20211015/20140622ikqcu38BqH.png

https://github.com/WenchaoD/FSCalendar

使用方法如下

use_frameworks!
target '<Your Target Name>' do
    pod 'FSCalendar'
end

在這個日歷的 VC 上,只要 conform FSCalendarDelegate, FSCalendarDataSource,就可以達到顯示效果了。

這個頁面主要目的,是以日曆方式呈現,哪一天有幾檔股票可抽,下方配上 UITableView,讓可抽的股票用列表呈現。

我用的 feature 在 FSCalendar 的 readme 上有呈現。

https://ithelp.ithome.com.tw/upload/images/20211015/20140622f8IXXqMybl.png

extension CalendarViewController: FSCalendarDelegate, FSCalendarDataSource {
    
    func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
        
        viewModel.selectedDate = date
        showEmptyViewIfNeeded(at: date)
        tableView.reloadData()
    }
    
    func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
        
        return viewModel.getSubscriptionInfo(at: date).count
    }
    
    func maximumDate(for calendar: FSCalendar) -> Date {
        let maxDate = dateUtility.getDateByAdding(byAdding: .month, value: 6)
        return maxDate ?? Date()
    }
}

上一篇
D34 - 用 Swift 和公開資訊,打造投資理財的 Apps { 台股申購功能擴充.5 }
下一篇
D36-鐵人賽完賽心得
系列文
使用 Swift 和公開資訊,打造投資理財的 Apps37
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言