《DAY 28》天气 App 实作(一)

前面几天已经练习了如何呈现 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


<<:  Week33 - 利用Golang Server与Nats实作简单的Pub/Sub demo [Server的终局之战系列]

>>:  资视就是力量 - Highcharts / Vue 资料绑定

D28 第十六周 (回忆篇)

终於完结第十一周作业 最後集中在两天的时间把部落格作业写出来,前面花时间跟留言板搏斗的经验果然有派上...

[鼠年全马] W34 - Vue出一个旅馆预约平台(8)

这周要来将 [预约页面] 最後的 房间详细资讯 完成!! [标题] (已完成) [预约功能] (已完...

Day 05:AngularJS?Angular?傻傻分不清楚?

Angular 是由 Google 主导,开源的 JavaScript 应用程序框架,目前稳定版本已...

[第二十七天]从0开始的UnityAR手机游戏开发-虚拟摇杆 Joystick 01

点击Window→Asset Store开启Unity资产商店 在Asset Store的搜寻列搜寻...

JAVA - JAVA Log4j 专门用於 Java 语言的日志记录工具

JAVA - JAVA Log4j 专门用於 Java 语言的日志记录工具 参考资料 参考资料1:L...