2015-11-25 3 views
7

So che posso fare quanto segue per mappare le modifiche al campo di testo di Notes di un oggetto personalizzato su un UITextView.RxSwift Way per mappare e associare il testo di UITextView al campo di testo dell'oggetto personalizzato?

self.notesViewModel.currentNote() 
      .map { $0.text } 
      .bindTo(self.notesTextView.rx_text) 

Come posso eseguire l'inversione utilizzando lo stesso tipo di schema? Il pattern è notesTextView.rx_text, mappalo al testo della nota corrente. Io so come fare il seguito della quale si sente non RxSwift-y:

_ = notesTextView.rx_text.subscribeNext { someText in 
    self.notesViewModel.currentNote().value.text = someText 
} 

IOW, sembra che dovrei essere in grado di prendere l'UITextView (aka notesTextView), mappa, e legare i cambiamenti nella nota corrente. La nota corrente restituisce una variabile con una nota avente un campo Stringa di testo.

risposta

11

È possibile utilizzare l'operatore di associazione a due vie <->.

C'è una bella example in the RxSwift repo, ecco un esempio di utilizzo:

// bind UI values to variables 
usernameOutlet.rx_text <-> username 
passwordOutlet.rx_text <-> password 
repeatedPasswordOutlet.rx_text <-> repeatedPassword 
+0

Si tratta di un ottimo operatore e vengono segnalati i warrant. Ottimo lavoro che fornisce un collegamento al file GitHubSignupViewController che lo contiene. – finneycanhelp

+1

Dopo aver posizionato la funzione in posizione, ho provato notesTextView.rx_text <-> self.notesViewModel.currentNote() testo e ottengo l'errore:. "Impossibile convertire il valore di tipo 'ControlProperty ' al tipo di argomento previsto 'ControlProperty <_>' – finneycanhelp

+0

Per RxSwift 2.2: https://github.com/ReactiveX/RxSwift/blob/master/RxExample/RxExample/Operators.swift#L20 – thierryb

0

avevo bisogno di fare questo tra un textField e variabili di tipi diversi, ho presentato la soluzione mi è venuta con l'utilizzo di tuple e chiusure come una richiesta di pull:

https://github.com/ReactiveX/RxSwift/pull/559

Lo stesso metodo può essere utilizzato per mappare una doppia per una stringa per esempio.