Il cacao reattivo non è richiesto per MVVM. Ho costruito un framework MVVM di grande successo senza alcun legame. I binding non sono un requisito per MVVM.
In particolare, il collegamento tra il modello e la Vista Vista richiede la vista del modello per segnalare al Vista che deve aggiornare i dati. Questo può essere ottenuto usando Reactive Cocoa, KVO (mi piace molto il KVOController di Facebook), o anche usando un semplice pattern delegato.
Il modello di visualizzazione riconosce quando è necessario aggiornare la vista: i dati sono cambiati o si effettua una richiesta di dati asincrona tramite il modello e il modello è stato caricato nel modello di vista.
Quando si imposta la vista, si potrebbe associare ogni controllo al corrispondente valore del Model View. Ho scoperto che quando ho bisogno di sfornare schermi, questo può diventare molto noioso. Invece, preferirei avere un unico metodo che viene chiamato quando il View Model segnala che la vista dovrebbe aggiornarsi. All'interno di questo metodo, ho semplicemente intenzione di impostare tutte le mie proprietà di controllo.
Ora, è sufficiente preoccuparsi di come viene attivato quel metodo. Nel mio contesto personale, utilizzo KVO e i miei ViewController controllano una proprietà di timestamp sulla mia base di esempio ViewModel. Ogni volta che i miei modelli di vista aggiornano i loro dati sottostanti, il loro timestamp viene aggiornato che attiva l'aggiornamento. Il controller di visualizzazione può essere altrettanto facilmente registrato come delegato di aggiornamento di ViewModel e utilizzare un modello di delegato standard.
Ancora, non è MVVM sui requisiti di attuazione specifiche, e più di un concetto più alto livello di separazione dei problemi, la dipendenza disaccoppiamento, e incapsulamento.
fonte
2014-12-05 18:27:37
La tua domanda è interessante ma troppo ampia. Cos'hai in mente? Altrimenti, dovresti dare un'occhiata a questi due post del blog: [Swift: Usare MVVM per lavorare con gli optionals] (http://natashatherobot.com/swift-mvvm-optionals/) e [Introduzione a MVVM] (http: // www.objc.io/issue-13/mvvm.html). Si può anche leggere questo thread: [Riscrivere il codice da Objective-C per conformarsi con gli strumenti di potere di Swift e lo stile conciso] (http://codereview.stackexchange.com/questions/62958/rewrite-code-from-objective-c-to -conform-con-swift-power-strumenti-e-conciso-styl). L'eccellente risposta fornita da Rob Mayoff utilizza l'installazione di MVVM. –
Un altro esempio di Swift MVVM su GitHub [qui] (https://github.com/shilgapira/SwiftDemoMVVM). –
Ottieni i vantaggi dell'adozione di MVVM solo se disponi di un sistema che ti aiuta con l'associazione dei dati.In iOS questo è quasi certamente un meccanismo KVO. Avrai bisogno di questo per evitare di scrivere il tuo codice di tracciamento delle modifiche per ogni proprietà. ReactiveCocoa è il progetto più maturo che unifica l'API KVO insieme a notifiche e flussi asincroni ed è incredibilmente potente una volta superata la curva di apprendimento. Consiglierei di non cercare di evitarlo, ma in realtà di abbracciarlo. – fatuhoku