Я пытаюсь получить элемент из 2 наблюдаемых, созданных асинхронно, и передать их в качестве параметров функции, как только получим оба.
Однако мой оператор карты в моей ViewModel ниже не выполняется, и точка останова просто пропускается поверх него.
ViewModel.swift
init(api: ApiService) {
self.api = api
}
func getData1() -> Observable<Data1> {
return api.getData1()
}
func getData2() -> Observable<NewViewModel> {
return Observable.create { observer in
let disposable = Disposables.create()
self.api.getData2()
.map {
$0.arrayOfStuff.forEach { (stuff) in
let background = stuff.background
let newViewModel = NewViewModel( background: self.spotlightBackground)
observor.onNext(newViewModel)
}
return disposable
}
}
В моем ViewController я создаю Zip наблюдаемых, потому что newViewModel [getData2] может вернуться позже, и я хочу вызвать функцию, когда обе наблюдаемые дают значение
в моем viewDidLoad () я настраиваю zip, подписываясь и добавляя наблюдаемые
let zippy = Observable.zip(viewModel.getData1(), viewModel.getData2()).subscribe(onNext: { (data1, newViewModel) in
self.layoutSetUp(data1: data1, newViewModel: newViewModel)
})
zippy.disposed(by: disposeBag)
private func layoutSetUp(data1: Data1, newViewModel: NewViewModel) {
DispatchQueue.main.async {
self.view = SwiftUIHostingView(rootView: SwiftUIContentView(data1: data1, newViewModel: newViewModel))
}
}
Это не выполняется, и никакие значения не передаются в функцию, и я не уверен, почему