1つのViewModelから別のViewModelにSignalを送信しようとしています。基本的には、2番目のViewModelに最初のViewModelと同じSignalを使用したいが、2番目のViewModelのinit状態で初期値が必要である。これまでのところ私はSignal<Person, NoError>
とPerson
というモデルを送ってこれを解決することができました。ReactiveCocoaを使用して、初期値のSignalを正しく送信する方法は?
struct Person {
let name: String
let age: Int
}
はPersonListViewModel
の信号は、ストリームが処理され、出力として定義されます。
protocol PersonListViewModelOutputs {
var goToPersonDetail: Signal<Person, NoError> { get }
}
PersonDetailViewModel
:
protocol PersonDetailViewModelInputs {
func viewDidLoad()
func configureWith(personSignal: Signal<Person, NoError>, initialPerson: Person)
}
protocol PersonDetailViewModelOutputs {
var person: Signal<Person, NoError> { get }
}
protocol PersonDetailViewModelType {
var inputs: PersonDetailViewModelInputs { get }
var outputs: PersonDetailViewModelOutputs { get }
}
public final class PersonDetailViewModel: PersonDetailViewModelType, PersonDetailViewModelInputs, PersonDetailViewModelOutputs {
init(){
self.person = self.configureWithPersonPropery.signal.skipNil()
}
private let configureWithPersonProperty = MutableProperty<Person?>(nil)
func configureWith(personSignal: Signal<Person, NoError>, initialPerson: Person) {
configureWithPersonProperty.value = initialPerson
configureWithPersonProperty <~ personSignal.producer
}
}
しかし、この解決策はfunc configureWith(...)
内の不要なパラメータを持っているようだと私はそれを解決するためのより良い方法があるかもしれませんね。
例えば、Person Structを送信せずに最後に放出された値をpersonSignal: Signal<Person, NoError>
func configureWith(...)
から得ることは可能ですか?
私が探していたものです。ありがとうございました! –