Weather API + WidgetKit — «асинхронный вызов функции, не поддерживающей параллелизм»
я пытаюсь сделатьTimelineProvider
для iOS 16WeatherKit
и я борюсь с тем, как я встречаю подпись протокола и использую новый асинхронный API.
Вот мой код:
struct WeatherProvider: TimelineProvider {
func getSnapshot(in context: Context, completion: @escaping (WeatherEntry) -> ()) {
let weather = try? await WeatherService.shared.weather(for: currentLocation)
let entry = WeatherEntry(date: Date(), wind: nil, locationAuthStatus: nil)
completion(entry)
}
// etc
}
Компиляция этого приводит к ошибке сборки'async' call in a function that does not support concurrency
.
Автоматическое исправление предлагает:Add 'async' to function 'getSnapshot(in:completion:)' to make it asynchronous
Но если вы сделаете это, структура больше не будет соответствовать:Type 'WeatherProvider' does not conform to protocol 'TimelineProvider'
Кажется, это должно быть тривиально, но я не могу найти примеров того, как это сделать.