2017-08-29 1 views
1

J'utilise rxSwift pour la première fois, j'ai un champ de texte dans ma vue, je veux définir sa valeur à la propriété viewModels qui correspond. J'ai le code suivant mais il y a des erreurs. Qu'est-ce que j'oublie ici?Configurer rxSwift avec un champ de texte?

self.loginView.emailTextField.rx.text 
      .bindTo(self.loginViewModel.userEmail) 
      .addDisposableTo(self.disposeBag) 

Problème:

peut invoquer 'BindTo' avec une liste d'arguments de type '(String)'

+0

Est-ce que userEmail normal String? Vous ne pouvez pas lier les Observables aux types primitifs normaux. –

+0

Pouvez-vous afficher le modèle de vue? –

Répondre

0

Je pense que vous avez utilisé le type de chaîne pour USEREMAIL dans votre ViewModel . Vous ne pouvez pas lier observable à la chaîne normale. Votre point de vue type de modèle devrait ressembler à ceci:

var userEmail = Variable<String>("") 

et maintenant de la ViewController vous pouvez lier comme ceci:

emailTextField.rx.text.orEmpty 
    .bind(to: viewModel.userEmail) 
    .addDisposableTo(disposeBag) 

Aussi, si vous souhaitez utiliser la chaîne en option, vous pouvez aussi le faire comme ceci:

var userEmail = Variable<String?>(nil) 
emailTextField.rx.text.bind(to: viewModel.userEmail)