У меня есть два String-издателя и одно вычисленное свойство, которое возвращает AnyPublisher.Логика довольно проста, но я хотел бы знать, есть ли способ распространения начального значения.Я думаю, что это должно быть как-то возможно, так как у издателей есть начальные значения.
В VC я присваиваю новые значения издателям из ViewModel (из textField).
firstTextField.addTarget(self, action: #selector(firstTextFieldDidChange(_:)), for: .editingChanged)
secondTextField.addTarget(self, action: #selector(secondTextFieldDidChange(_:)), for: .editingChanged)
@objc private func firstTextFieldDidChange(_ textField: UITextField) {
viewModel.firstPublisher = textField.text ?? ""
}
@objc private func secondTextFieldDidChange(_ textField: UITextField) {
viewModel.secondPublisher = textField.text ?? ""
}
А потом яназначение Publisher (cellLatest) моей кнопке:
_ = viewModel.validatedText
.receive(on: RunLoop.main)
.assign(to: \.isEnabled, on: button)
В ВМ у меня есть два издателя:
@Published var firstPublisher: String = ""
@Published var secondPublisher: String = ""
и CombineLatest:
var validatedText: AnyPublisher<Bool, Never> {
return Publishers.CombineLatest($firstPublisher, $secondPublisher) {
return !($0.isEmpty || $1.isEmpty)
}.eraseToAnyPublisher()
}
validatedText onlyначинает публиковать новые значения, когда я начинаю печатать в обоих текстовых полях.Я попытался присвоить некоторые новые значения в init VM, например (для первого и второго Publisher), но это также не сработало.Есть ли способ сделать это, или мне придется установить начальное состояние кнопки (отключить его) без использования комбайна?