Post

Replies

Boosts

Views

Activity

Reply to WeatherKit HourWeather precipitationAmount
Incidentally, the WeatherKit REST API includes "precipitationAmount" for hourly weather conditions: https://developer.apple.com/documentation/weatherkitrestapi/hourweatherconditions so it seems odd and inconsistent that it is not included in the Structure definition for HourWeather: https://developer.apple.com/documentation/weatherkit/hourweather
Jun ’22
Reply to WeatherKit HourWeather precipitationAmount
So I've solved my own issue for now. It may not be pretty (haven't used strings much), but by defining this function I was able to extract the precipitation amount as a Measurement, just like other elements of the HourWeather struct. // Function to get precipitationAmount as a measurement from one instance of HourWeather // Written by Neil Gordon, 14 June 2022 - pending inclusion of precipitationAmount in the // WeatherKit definition of the Structure for HourWeather func precipitationAmount(hourWeatherElement: HourWeather) -> Measurement<UnitLength> {     var contents : String = " " var answer = Measurement(value: -9.9, unit: UnitLength.millimeters)  // Default if problems     print (hourWeatherElement, to: &contents)    // Get the contents of the instance as a string     if let firstRange = contents.range(of: "precipitationAmount: ") {     // Find where precip amount should be         let startIndex = firstRange.upperBound         // Drop everything before that         contents = String(contents[startIndex...])         // Find position of first comma, then use up to just before that         let commaIndex = contents.firstIndex(of: ",")!         // Get the two bits of value and units - usually looks something like "2.3 mm"         let contents = contents[..<commaIndex]         let bits = contents.components(separatedBy: " ") // Convert string to a Double for use in Measurement         if let amount = Double(bits[0])  {             let units = bits[1] // I think mm and in are all I should see?             if units == "mm" {                  answer = Measurement(value: amount, unit: UnitLength.millimeters)             } else {                  answer = Measurement(value: amount, unit: UnitLength.inches)             }         }     }     return answer }
Jun ’22