2016-12-15 8 views
1

Я использую ReactiveCocoa 5,0 альфа-3, ReactiveSwift и Swift 3Использования неразрешенного оператора «<~»

У меня возникли проблемы с креплениями моего UITextField к MutableProperty.

В ReactiveCocoa 4, я использовал это: -

extension UITextField { 
    func signalProducer() -> SignalProducer<String, NoError> { 
     return self.rac_textSignal().toSignalProducer() 
      .map { $0 as! String } 
      .flatMapError { _ in return SignalProducer<String, NoError>.empty } 
    } 
} 

viewModel.email <~ emailTextField.signalProducer() 

Но теперь в ReactiveCocoa 5, я не в состоянии сделать это. Из того, что я понимаю, я должен сделать что-то вроде этого, я предполагаю, что: -

viewModel.email <~ emailTextField.reactive.textValues 

Но либо он говорит: «< ~» нерешенным или textValues ​​не является свойством.

Пожалуйста, помогите мне связать это.

+0

Что вы пытаетесь выполнить с помощью '<~'? –

+0

Я просто пытаюсь привязать текстовое поле к mutlableproperty. Я делаю что-то неправильно? –

+0

Вы импортировали ReactiveCocoa в свой файл расширения? –

ответ

1

<~ в Rac5 является функцией для связывания BindingTarget с сигналом, и может использовать его как это:

placeHolderLabel.reactive.isHidden <~ 
     self.reactive 
     .values(forKeyPath: #keyPath(passwordTF.text)) 
     .map({ (value) -> Bool in 
      let value = value as! String 
      return !value.isEmpty 
     }) 

или это:

let buttonEnabled = MutableProperty<Bool>(false) 

button.reactive.isEnabled <~ buttonEnabled 

И убедитесь, что вы импортировали модуль ReactiveSwift в файлах, которые вы используете <~.