Hello, I'm quite new to SwiftUI Development, learned how to code without getting a Compute Science college Degree. Please advise how do I fetch SunEvents?
private func showWeatherInformation(latitude: Double, longtitude: Double) async {
let weatherService = WeatherService()
let journalingWeather = CLLocation(latitude: latitude, longitude: longtitude)
do {
let weather = try await weatherService.weather(for: journalingWeather)
let temperature = weather.currentWeather.temperature.value.description
let humidity = weather.currentWeather.humidity.formatted(.percent).description
let weatherDesc = weather.currentWeather.condition.description
let weatherIcon = weather.currentWeather.symbolName.description
let feltLikeTemp = weather.currentWeather.apparentTemperature.value.description
let pressure = weather.currentWeather.pressure.value.description
let dewPoint = weather.currentWeather.dewPoint.value.description
let uvIndex = weather.currentWeather.uvIndex.value.description
let visibility = round(weather.currentWeather.visibility.value).description
let windSpeed = weather.currentWeather.wind.speed.value.description
let compass = weather.currentWeather.wind.direction.value.description
/// What to decode?
let sunEvents = try SunEvents(from: journalingWeather as! Decoder)
let sunrise = sunEvents.sunrise ?? Date.now
let sunset = sunEvents.sunset ?? Date.now
self.temperatureInput = temperature
self.weatherDescriptionInput = weatherDesc
self.weatherIconInput = weatherIcon
self.feltLikeTemperatureInput = feltLikeTemp
self.pressureInput = pressure
self.humidityInput = humidity
self.dewPointInput = dewPoint
self.uvIndexInput = uvIndex
self.visibilityInput = visibility
self.windSpeedInput = windSpeed
self.windDegreeInput = compass
self.sunriseTimeInput = sunrise
self.sunsetTimeInput = sunset
} catch {
print("\(error)")
}
}
I'm getting this error Thread 1: signal SIGABRT at let sunEvents = try SunEvents(from: journalingWeather as! Decoder) when I run it on actual device.
Any help would be very much appreciated. Thank you!
Hi @kaviraja,
The weather you get back from weatherService.weather(for:) is of type Weather. Here are the docs: https://developer.apple.com/documentation/weatherkit/weather. You're accessing currentWeather, which is of CurrentWeather type (see docs), but SunEvents is only returned from DayWeather (see docs), which you can find via weather.dailyForecast[0].sun.
Hope that helps.