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'

Кажется, это должно быть тривиально, но я не могу найти примеров того, как это сделать.

0 ответов

Другие вопросы по тегам