Simple Weather App ☀️🌦⛈❄️

練習利用 JSONDecoder 和 Codable 解析 JSON 和生成自訂型別資料

(4) 參考連結 (彼得潘教學資源)

彼得潘~利用 JSONDecoder 和 Codable 解析 JSON 和生成自訂型別資料

學長Ken~使用天氣API的串接練習

(5) 內容說明(程式碼請見GitHub)

之前常常聽到API,但一直不知道是什麼意思,也不清楚要如何去使用它!原來關鍵是必須透過JSONDecoder 和 Codable 來解析 JSON ,以及生成自訂型別資料,突然想套用那位一出場就一定會有人GG的名偵探柯南的話!『一切謎題就要揭曉了!!』😆🤣

恩恩~這句話好像是金田一說的…不管…反正就是想說一下!🤭🤫

這次是從OpenWeatherMap取得天氣的API,再透過解析JSON後取得相關的溫度(目前溫度、最高溫度、最低溫度)濕度、風速、天氣描述…等,當然還同時有經緯度座標和相關ID代號,由於免費使用API的資訊有限,所以能用的就盡量使用了!

其實我想要有天氣預報的功能,至少可以有一週的預報,這樣自己拿來使用的話,至少比較符合需求,要不然…走出門口馬上就可以知道當下的天氣了!😅😅

這次遇到卡住比較久的時間是,參考太多網路高手們分享的程式碼,整個在JSON解析部分多花了很多時間(因為大家的寫法都不太相同),最後還是覺得學長Ken的程式碼我比較能看得懂,所以就以學長的程式碼為主要參考方向,並延伸自己想要的功能與模式。

程式碼部分建議先參考Ken的,如果對我的Simple Weather App有興趣的朋友,在自GitHub下載唷!(我很多地方都是東改西改,東加西加…💂‍♀️💂‍♀️)因為解析JSON是這次練習最重要的環節,我其實還沒有很懂,所以請參考Ken的相關文章分享!

這次的設計主要是有查詢功能,以及預設常用城市的表單,也順便再練習上次彼得潘教的TableViewController及TableViewCell,關於這兩個部分,查詢功能比較快解決,但在TableViewCell預設的常用城市,回傳英文城市名到原始頁面的問題(需要在不同的 controller 畫面間傳遞資料),由於卡關卡很久,也試了很多不同方式的程式編碼,但還是不斷有Bug…最後只好先用Swift新手村的必殺技~全域變數 來解決了!😅🤫

這部分其實彼得潘有特別提醒「不要太常使用,因為任何檔案皆可存取,到時候當變數內容出問題時,我們需要花很多時間研究,因為每個檔案都可能使用到它。」

由於不想讓練習時間拖太長…對於不同頁面間的資料傳遞,之後更熟練時,我會再調整與修改程式碼,敬請多多包涵唷!

(6) 心得感想

這次的程式碼編寫設計過程,我一樣是邊找資料邊除錯,所以程式碼部分可能有點雜亂,但可以註解的我有盡量標記,有興趣的朋友請自行在GitHub下載唷!

這次最大的感想就是,API和JSON很好玩!因為很多東西可以製作成簡易方便的APP,例如和朋友去玩沙板時,需要查詢潮汐才知道當天什麼時間適合玩沙板,就可以有一個查詢潮汐功能的App,我想這個對於從事水上活動(衝浪、風浪板、出海釣魚…等)都會很實用的!

還有大眾運輸及航班查詢,這些應該也都可以取得API,這樣就可以設計很多便捷的App來練習和使用了!(我想官方資源和學術研究機構,應該會有多到數不清的API吧!)😆😍

坦白說很多東西和觀念,我並沒有很熟悉!所以就沒有特別在這篇文章中分析程式碼的部分,未來越來越熟練時,我一定會盡量把問題與解決方案說明清楚!

最後~老話一句,持續努力加油!🙆💪

--

--