iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 28
0
Mobile Development

《菜鳥のSwift》持續30天開發挑戰系列 第 28

《DAY 28》天氣 App 實作(一)

  • 分享至 

  • twitterImage
  •  

前面幾天已經練習了如何呈現 JSON 資料在 App 上,在最後完賽前會做一個天氣 App 出來,而 JSON 的資料由中央氣象局提供。

  • 根據 JSON 寫一個 struct,一樣只寫我們需要的內容,這部分需要一點耐心。
struct Weather: Codable {
    var records: records
}

struct records: Codable {
    var location: [location]
}

struct location: Codable {
    var locationName: String
    var weatherElement: [weatherElement]
}

struct weatherElement: Codable {
    var elementName: String
    var time: [time]
}

struct time: Codable {
    var startTime: String
    var endTime: String
    var parameter: parameter
}

struct parameter: Codable {
    var parameterName: String
    var parameterValue: String?
    var parameterUnit: String?
    // 注意 parameterValue 和 parameterUnit 不一定存在,所以宣告成 String?
}
  • 在 ViewController.swift 加入程式碼。
import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        var request = URLRequest(url: URL(string: "https://opendata.cwb.gov.tw/api/v1/rest/datastore/F-C0032-001?Authorization=CWB-6F803E34-66E5-4135-AC7D-25811AD53D5C&format=JSON&locationName=%E5%AE%9C%E8%98%AD%E7%B8%A3")!,timeoutInterval: Double.infinity)
        request.httpMethod = "GET"
        let task = URLSession.shared.dataTask(with: request){(data, respond, error) in
            
            let decoder = JSONDecoder()
            if let data = data, let weather = try? decoder.decode(Weather.self, from: data){
                
                print(weather)
                
            }
            else {
                print("error")
            }
        }
        task.resume()
        
    }
    
}

執行看看,確認寫好的 struct 沒有問題。
https://ithelp.ithome.com.tw/upload/images/20201011/20129680WaOMdbPK91.png


上一篇
《DAY 27》在表格裡顯示 JSON 資料
下一篇
《DAY 29》天氣 App 實作(二)
系列文
《菜鳥のSwift》持續30天開發挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言