#14 模仿 Dcard APP | 串接 Dcard API part1:文章總覽

使用功能介紹

1 . 畫面排版使用 storyboard ,層層的stackview 搭配 autolayout,並將各個 Label 與 imageView 拉出 Outlet

@IBOutlet weak var genderImageView: UIImageView!@IBOutlet weak var forumNameLabel: UILabel!@IBOutlet weak var schoolLabel: UILabel!@IBOutlet weak var titleLabel: UILabel!@IBOutlet weak var excerptLabel: UILabel!@IBOutlet weak var likeCountLabel: UILabel!@IBOutlet weak var commonCountLabel: UILabel!@IBOutlet weak var articleImageView: UIImageView!

2 . 主頁使用全部文章的 API 網址

https://www.dcard.tw/service/api/v2/posts

使用 postman 分析 JSON 資料,例如主頁一篇文章資料

定義需要用到的資料型別

型別遵從 Codable,代表可解碼或編碼,由於 JSON 資料中不是每筆都有 school 的資料,因此設為 optional

3 . 定義讀取 API 資料的 func loadData,將 API 資料儲存在自定義的 Post 中,在 viewDidLoad 中執行

預覽文章的圖片也需要從 JSON 抓圖片,不是每筆資料都有 mediaMeta,因此如果有此資料才會開始抓圖片,如沒有此資料則隱藏 imageView

4 . 定義下拉更新功能,在 viewDidLoad 中執行,下拉時會讀取新的資料,並更新 TableView 中的資料

在 loadData func 中的 DispatchQueue.main.async 裡停止 refreshControl

DispatchQueue.main.async {
self.tableView.reloadData()
self.refreshControl?.endRefreshing()
}

5 . Part 1 完成,未完待續

--

--