Вступить в клуб →
средняявопросCombine: издатели, подписки и операторы

Кнопка «Оформить» не активируется, пока пользователь не тронет чекбокс согласия

@Published var email = ""
@Published var phone = ""
let agreementToggled = PassthroughSubject<Bool, Never>()

Publishers.CombineLatest3($email, $phone, agreementToggled)
    .map { email, phone, agreed in email.contains("@") && phone.count == 11 && agreed }
    .assign(to: &$isButtonEnabled)

Согласие уже отмечено по умолчанию на экране. Пользователь вводит корректные почту и телефон, но isButtonEnabled не пересчитывается вообще, даже при вводе. Почему?

  • CombineLatest ждёт первое значение от каждого
  • CombineLatest реагирует только на последний
  • assign(to:) нельзя использовать с map
  • @Published не работает внутри CombineLatest

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела