Парсинг JSON в разные модели(struct)
Class (ViewModel) для получения JSON из сети и Парсинга в модель. Networking на Combine. В class есть два @Published. Первый endPoint в зависимости от значения делает запрос к разным источникам данных в сети. Соответственно на втором (games) получаем распарсеный json. Вопрос в том как можно менять тип второго Published в зависимости от значения первого.
import SwiftUI
import Combine
public final class GamesViewModel: ObservableObject {
// Networking
private var networking = Networking.shared
// Games
@Published public var games: GamesModel = .init()
@Published public var endpoint: String = .init("Football") // Football
// Save Published
private var cancellableSet: Set<AnyCancellable> = []
deinit {
for cancell in cancellableSet {
cancell.cancel()
}
}
public init() {
$endpoint
.flatMap { [self] (indexEndpoint) -> AnyPublisher<GamesModel, Never> in
networking.fetchGames(endPoint: Games(choose: indexEndpoint))
}
.assign(to: \.games, on: self)
.store(in: &self.cancellableSet)
}
}