AvWeather 是一个 Swift 包,允许您从航空气象中心(网址:aviationweather.gov)检索和使用数据。
(示例展示了 Metar,但 TAF 同样可以使用)
import AvWeather
let avWeatherClient = AWCClient()
// send a request for METAR data for Boston Logan Airport (KBOS)
avWeatherClient.send(MetarRequest(forStation: "KBOS")) { response in
switch response {
case .success(let metars):
// do something with new METAR data
print(metars[0].rawText)
case .failure(let error):
// request failed
print(error.localizedDescription)
}
}
// send a request for METAR data at multiple stations
avWeatherClient.send(MetarRequest(forStations: ["KBOS", "KORD", "KLAX"])) { response in
switch response {
case .success(let metars):
// do something with new METAR data
print(metars[0].rawText)
case .failure(let error):
// request failed
print(error.localizedDescription)
}
}
AWC 区分国际和美国 Sigmets。 AvWeather 都可以检索它们,并由一个通用的 Sigmet 类表示,尽管具有一些不同的属性。 有关详细信息,请参阅 Sigmet.swift
中的实现。
import AvWeather
let weatherClient = AWCClient()
//Configure the request for International or US Sigmets
weatherClient.send(SigmetRequest(type: .international)) { [weak self] response in
DispatchQueue.main.async {
switch response {
case .success(let sigmets):
//Do something with sigmets
...
case .failure(let error):
// request failed
let msg = AWCClient.messageIn(error)
print(msg)
}
}
}
AvWeather 也可以在 Swift Async/Await 并发方案中使用
(示例展示了 TAF,但 Metar 和 sigmets 同样可以使用)
// Instantiate a client
let client = AWCClient()
// Configure the request using 1 or more stations
let request = TAFRequest(forStations: ["ESSA", "ENGM", "GCLP", "LFPG", "KJFK", "KLAX"], mostRecent: true)
do {
let tafs = try await client.send(request)
// do something with TAF data
print(tafs[0].rawText)
} catch {
// An error was thrown
print("Error thrown getting tafs: \(AWCClient.messageIn(error))")
}