SingaporeKit 使您能够在 SwiftUI 项目中轻松使用新加坡政府数据。通过使用 @Singapore
属性包装器,您可以从 data.gov.sg 获取实时政府数据。
使用 @Singapore
属性包装器来检索任何 data.gov.sg 实时 API 值。
// Environment-Related
@Singapore(\.relativeHumidity) var relativeHumidity
@Singapore(\.twentyFourHourWeather) var twentyFourHourWeather
@Singapore(\.airTemperature) var airTemperature
@Singapore(\.rainfall) var rainfall
@Singapore(\.airQuality) var airQuality
@Singapore(\.uvIndex) var uvIndex
@Singapore(\.twoHourWeather) var twoHourWeather
@Singapore(\.fourDayForecast) var fourDayForecast
// Transport-Related
@Singapore(\.carparkAvailability) var carparkAvailability
@Singapore(\.trafficImages) var trafficImages
@Singapore(\.availableTaxis) var availableTaxis
您也可以提供一个选项,例如日期,以检索特定日期/时刻的数据。
@Singapore(\.rainfall, options: .moment(.now.addingTimeInterval(-86400))) var uvIndex
这是一个如何检索给定属性值的示例。
struct RelativeHumidityView: View {
@Singapore(\.relativeHumidity) var relativeHumidity
var body: some View {
Group {
switch relativeHumidity {
case .loading, .none: ProgressView()
case .failure: Text("Failed to fetch data")
case .success(let relativeHumidity):
List(relativeHumidity.stations) { station in
Section {
Map {
Marker("\(station.name)", coordinate: station.location.coordinate)
}
.frame(height: 100)
.listRowInsets(.init(top: 0, leading: 0, bottom: 0, trailing: 0))
Text(station.name)
LabeledContent("Station ID") {
Text(station.id)
}
if let latestReading = relativeHumidity.latestReading(for: station) {
Label("\(String(format: "%.1f", latestReading))%",
systemImage: "humidity")
}
}
}
}
}
.navigationTitle("Locations")
}
}