Мне трудно разобраться с приведенным ниже кодом, значение в dict sectionMoviesBundle = [HomeSection: [T]]
может быть MovieViewModel
или ActorViewModel
, два из которых являются типом структуры.
Так, в общем, как мне справиться с этим dict [String: [typeA or typeB...]]
, используя generi c или AnyObject, как nowPlaying.results.map(MovieViewModel.init) as AnyObject
? И как это реализовать в коде?
import SwiftUI
import Combine
class MovieListViewModel: ObservableObject {
private var webService = WebService()
private var cancellableSet: Set<AnyCancellable> = []
@Published var sectionMoviesBundle = [HomeSection: [T]]() // Don't know how to deal with it now=.=!
func getSectionMoviesBundle() {
webService.getSectionsPublisher()
.receive(on: DispatchQueue.main)
.sink(receiveCompletion: { status in
switch status {
case .finished:
break
case .failure(let error):
print("ERROR: \(error)")
break
}
}) { (nowPlaying, popular, upComing, topActor) in
self.sectionMoviesBundle[.NowPlaying] = nowPlaying.results.map(MovieViewModel.init)
self.sectionMoviesBundle[.Popular] = popular.results.map(MovieViewModel.init)
self.sectionMoviesBundle[.Upcoming] = upComing.results.map(MovieViewModel.init)
self.sectionMoviesBundle[.TopActor] = topActor.results.map(ActorViewModel.init)
}.store(in: &self.cancellableSet)
}
}