Usando Protocolos como ObservableObject

Bruno Faganello
Code With Coffee

--

Dica Rápida de SwiftUI e Combine

Fala desenvolvedores! Depois de muito sem escrever um artigo estou de volta para contar um pouco da minha jornada com o desenvolvimento iOS em SwiftUI e com o Combine.

Estou reescrevendo todo o código do +Sangue para SwiftUI e toda criação das Views foram bem tranquilas mas quando comecei a criar minhas ViewModels foi onde encontrei alguns problemas e são soluções que a "Internet" não tem falado tanto então vim compartilhar elas com vocês.

No SwiftUI uma das arquiteturas mais simples de ser implementada é o MVVM, até ai tudo certo, só que em vários lugares o pessoal coloca no init da View uma classe concreta, quebrando totalmente o princípio do SOLID

Pensando nisso, pensei em só fazer uma pequena alteração que meu @ObservedObject a poderia ter do tipo do meu protocolo:

mas a Apple não quis facilitar minha vida.

Não podemos fazer um protocolo ser um @ObservedObject mesmo ele implementando o protocolo ObservableObject.

Tomamos o seguinte erro:

Depois de muitas tentativas e erros e quase desistindo de fazer desse modo finalmente descobri como poderíamos implementar o protocolo. Vamos usar os famoso generics. Vamos fazer a nossa view receber um tipo T (você pode colocar o nome que quiser) onde ele deve ser do tipo do meu protocolo eai vem o macete, falar que a propriedade ObjectWillChangePublisher do nosso tipo T tem que ser igual a ObservableObjectPublisher

Bom espero que esse artigo tenha salvado vocês de algumas horas de frustração que eu tive durante esse pedaço de desenvolvimento do +Sangue.

Muito Obrigado!

--

--

Bruno Faganello
Code With Coffee

Engenheiro de Software Mobile. Fico constantemente atualizado com relação a tecnologia para que isso possa mudar a vida das pessoas. 💻