Swift Combine
EDITORAS E ASSINANTES
Neste artigo, veremos os fundamentos de dois componentes-chave PUBLISHER & SUBSCRIBER do combine framework . A Apple introduziu a estrutura de sistema integrada chamada Combine no ano de 2019. A estrutura fornece APIs declarativas para processar dados ao longo do tempo.
Editor
Publisher é um tipo que confirma o Protocol Publisher. Ele pode emitir eventos para um ou mais assinantes.
O protocolo do editor é genérico em dois tipos
- Saída → É o tipo de valor de saída que está sendo emitido pelo publicador
- Falha → É o tipo de erro que é lançado quando o publicador não consegue emitir valores
- O(s) valor(es) de saída
- uma conclusão
Um Publisher emitirá os eventos apenas quando estiver sendo inscrito.
Uma função chave do Publicador é receber, que recebe o parâmetro de entrada do assinante para corresponder à saída do editor.
Assinante
O assinante define que tipo de entrada deve receber do editor.
Protocolo de Assinante é genérico em dois tipos
- Entrada → É o tipo de valor de entrada que pode ser manipulado pelo assinante
- Falha → É o tipo de erro que pode ser tratado pelo assinante ao receber uma falha do editor
Trabalhando com Editor e Assinante
Criando editor
O editor pode ser criado usando qualquer um dos tipos fornecidos pela estrutura de combinação, como Just, Future, PassthroughSubject, CurrentValueSubject etc.
Criando Assinante
O assinante pode ser criado usando os tipos embutidos, como
- Afundar
- Atribuir
Sink é a maneira mais simples de anexar assinante a um editor
Sink fornece dois fechamentos, um para aceitar e lidar com o valor do editor e o outro para lidar com a conclusão
Atribuir a: )
Atribuir a irá pegar o valor do editor e atribuí-lo a um determinado objeto
Exemplos: demonstrar o funcionamento do editor e do assinante
Seqüência
O Sequence Publisher emitirá uma sequência de valores e, em seguida, chamará a conclusão no final.
Saída:
No exemplo dado, podemos ver que o editor primeiro emite todos os valores em ordem sequencial e finalmente chama o bloco de conclusão
Apenas
O Just Publisher emitirá instantaneamente sua saída para cada assinante exatamente uma vez e depois terminará.
Just Publisher não pode falhar com erro.
Saída:
Conforme mencionado, o Just finaliza o preenchimento logo após o envio do valor atual.
Futuro
O publicador futuro emitirá o valor ou a falha de uma operação assíncrona e, em seguida, terminará. Future fazendo isso com a ajuda do encerramento chamado Promise. Promise terá um parâmetro de resultado que pode ser um valor ou uma falha. Future terminará logo após receber o valor ou falha em Promise.
No exemplo acima, podemos ver que o Future está invocando um fechamento de promessa que inclui o valor.
Saída:
Aqui, “Started Running” é impresso primeiro, porque o assinante está se inscrevendo no editor primeiro, que inicia o trabalho assíncrono. Em seguida, imprime “End” porque a operação assíncrona está em andamento e, finalmente, imprime o valor recebido e a conclusão recebida.
PassthroughAssunto
PassthroughSubject emitirá vários valores e não possui nenhum valor inicial. Ao anexar um assinante, ele pode receber valor do método send (:).
No exemplo acima, podemos ver que PassthroughSubject não possui nenhum valor inicial. Ao enviar valor para o publicador usando o método send (:), resulta em emiti-lo no retorno de chamada do valor recebido do assinante.
Saída:
CurrentValueSubject
CurrentValueSubject emitirá o valor atual e deve ser inicializado com o valor inicial enquanto está sendo criado. Ao anexar um assinante a ele, o publicador pode receber o valor do método send (:) igual ao PassthroughSubject. O valor atual do editor pode ser acessado usando a propriedade value . Same pode ser usado para atribuir um novo valor atual ao publicador.
O exemplo acima mostra que o editor é inicializado com o valor inicial 0. Como PassthroughSubject, também podemos enviar valores para o editor usando o método send (:).
A propriedade value em CurrentValueSubject está sendo usada para obter o valor atual e também para atribuir o valor atual conforme mencionado.
Saída:
Inscrição
O editor assinado pelo assinante é chamado de Assinatura. A assinatura confirma o protocolo “ Cancelável ”.
[Observação: é recomendável cancelar a assinatura quando o assinante não quiser mais receber valor do editor. Ele pode ser cancelado usando o método "cancelar". Se não for chamado explicitamente, ele interromperá a assinatura somente quando o editor concluir]
Saída:
Espero ter abordado alguns princípios básicos que o ajudariam a brincar com o Editor e o Assinante. Feliz aprendizado!
Obrigado :)





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)