2016-05-31 23 views
5

Ho un problema con l'implementazione del pattern MVC in iOS con Swift. Secondo la documentazione di Apple, c'è uno schema MVC:Implementazione del pattern MVC

MVC pattern

sto bene con questo, ma come si può vedere, quando il modello si cambia (un messaggio in arrivo da una presa, per exemple) Come viene dovrebbe notificare il controller?

Ad esempio, ho un'applicazione di chat con un modello che rappresenta un elenco di messaggi. Quando il modello riceve un nuovo messaggio, come notifica il controller? C'è un modo convenzionale per farlo?

Grazie

+2

I due metodi più comuni sono la delega e l'utilizzo di NSNotifications – Paulw11

+0

@ Paulw11 Sì, funziona perfettamente ed è bellissimo, grazie! – Mathieu

+1

Key value observing (kvo) è anche un modo convincente per risolvere questo problema. NSHipster ha un articolo più vecchio ma interessante sull'argomento: http://nshipster.com/key-value-observing/ – Andrew2M

risposta

2

La comunicazione tra livelli è un argomento molto interessante e merita molto più di una semplice lista di metodi.

Ecco a very relevant article from objc.io che non solo ha un elenco esauriente di metodi di comunicazione, ma analizza anche i loro punti di forza e di debolezza e suggerisce un diagramma di flusso per aiutarti a decidere quale sia il metodo migliore.

Making the Right Choice

Nel tuo caso, il modello è il mittente, e il controllore è il destinatario. Di solito, il controllore detiene il modello, quindi il Controller conosce il Modello ma il Modello non è a conoscenza del Controller. Saresti quindi nella parte inferiore del grafico.

Si prega di leggere l'articolo completo. Ha anche esempi presi da framework Apple. È davvero utile

Problemi correlati