No meu caso específico, enfrentei um problema no SwiftUI que não permite adicionar mais de um alerta ao mesmo arquivo View
. Esse problema é conhecido e já foi resolvido, por exemplo, adicionando visualizações vazias adicionais:
https://stackoverflow.com/a/67395026/805701
Mas há outro problema: o SwiftUI não reage a essa situação (os alertas simplesmente pulam). Portanto, você precisa pesquisar manualmente em todo o código para encontrar essas duplicatas, que podem ocorrer em arquivos diferentes.
É possível de alguma forma indicar onde essas duplicatas ocorrem, por exemplo, adicionando um wrapper sobre o .alert(...)
modificador padrão que é gerado fatalError
quando esse modificador já foi adicionado a uma visualização?
Suponha que o modificador que você deseja encapsular seja chamado de
coolModifier
. Criaremos umcoolModifierWrapper
.Primeiro, adicione um
ContainerValue
para registrar secoolModifier
já foi aplicado.Usamos um
ContainerValues
valor em vez de um valor de ambiente ou preferência, porque não queremos que esse sinalizador escape de um contêiner. Ou seja, algo assim não deve ser considerado "modificadores duplicados".Em seguida, podemos escrever um
ViewModifier
que leia esse valor do contêiner e chamarfatalError
se ele fortrue
.Como extensão, tente alterar o tipo do valor do contêiner para uma estrutura com propriedades
file
eline
, para que você também possa relatar ondecoolModifierWrapper
está a primeira ocorrência de .Finalmente,
Isso detecta modificadores duplicados aplicados à mesma visualização, desde que os usos não sejam separados por um contêiner. Por exemplo, isso travará:
Se você quiser detectar usos duplicados em contêineres, use um valor de ambiente.