iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0

上次我們解包完資料,接下來要使用資料

CallAPI(finish: @escaping (() -> Void)) 函式是用於呼叫 API 來取得天氣資料。
函式內容如下:

  1. 建立一個 URL 物件,用於指定 API 的網址。
  2. 建立一個 URLSessionDataTask 物件,用於執行 API 呼叫。
  3. 在 URLSessionDataTask 物件的 completionHandler 閉包中,解析 API 回傳的 JSON 資料,並儲存到 downloadData 變數中。
    4.呼叫 finish() 閉包,表示取得天氣資料已完成。
    以下是 CallAPI(finish: @escaping (() -> Void)) 函式的示例呼叫:
 func CallAPI(finish: @escaping (() -> Void)) {
//        print(String(describing: CodingString!))
        let address = "https://opendata.cwb.gov.tw/api/v1/rest/datastore/F-C0032-001?Authorization=CWB-C1F1124A-2966-4D8B-9E96-BCDECED47A0E&locationName=\(String(describing: CodingString!))"
//        print(address)
        let url = URL(string: address)
        
        URLSession.shared.dataTask(with: url!) { [self] data, response, error in
            if let error = error {
                print(error.localizedDescription)
            }
            
            if let response = response {
                print(response as! HTTPURLResponse)
            }
            
            if let data = data {
                let decoder = JSONDecoder()
                do {
                    let WeatherData = try decoder.decode(WeatherResponse.self, from: data)
                    
                    print("==============================================================================")
                    print(WeatherData)
                    downloadData = WeatherData
                    print(downloadData?.records.location[0].weatherElement[0].time[0].endTime ?? "")
                    print("==============================================================================")
                    
                } catch {
                    print(error.localizedDescription)
                }
                finish()
            }
        }.resume()
//        tableView.reloadData()
    }

上一篇
Day15 天氣API 2
下一篇
Day17 天氣API 4
系列文
swift 新手路程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言