Запрос API в ReactiveSwift - PullRequest
       26

Запрос API в ReactiveSwift

0 голосов
/ 10 сентября 2018

Я новичок в ReactiveSwift. Я создаю приложение погоды, и мой запрос не работает.

func fetchCurrentWeather() -> SignalProducer<TodayWeatherData?, DownloadError> {
    guard let unwrappedURL = url else { return SignalProducer.empty }

    return URLSession.shared.reactive
        .data(with: URLRequest(url: unwrappedURL))
        .retry(upTo: 2)
        .flatMapError { error in
            print("Error = \(error.localizedDescription)")
            return SignalProducer.empty
        }
        .map { (data, response) -> TodayWeatherData? in
            do {
                let weatherArray = try JSONDecoder().decode(TodayWeatherData.self, from: data)
                return weatherArray
            } catch (let error) {
                print("\(error)")
                return nil
            }
        }
        .observe(on: UIScheduler())
}

self.weatherFetcher.fetchCurrentWeather().map { weather in 

}

Блок карты не вызывается. Что я должен изменить в этом запросе или в методе синтаксического анализа?

1 Ответ

0 голосов
/ 10 сентября 2018

Вы должны начать свой SignalProducer.

self.weatherFetcher.fetchCurrentWeather().startWithResult({ result in 
    switch result {
       case .success(let weather): //use the result value
       case .failed(let error): //handle the error
    }

})

у вас также есть

  • startWithFailed ()
  • startWithValues ​​()
  • startWithCompleted ()
  • start ()

во всех случаях вам нужно «запустить» холодные сигналы, чтобы они работали.

...