Essa aplicação de terminal busca encontrar uma viagem/destino a partir de seus gostos pessoais. Serão disponibilizados, também, nomes de pontos turísticos, hotéis e restaurantes(A ideia para trabalhos posteriores é colocar os links dos respectivos pontos turísticos, hotéis e restaurantes). Eu considerei que essa aplicação iria me ajudar muito nas minhas próximas viagens, visto que sou muito indecisa e ter um aplicativo que já me mostra os destinos de acordo com o meu mood seria perfeito.
O projeto é dividivo em locais.json e main.swift
main.swift:
A parte inicial apresentará todas as funcões que serão utilizadas
As 4(quatro) primeirar referem-se aos filtros. Eles mantêm um padrão, recebem uma string(resposta do usuário) e filtra na lista referente a pergunta anterior. -- Como assim a lista anterior?
A pergunta referente ao clima filtra todas as combinações inseridas na pasta locais.json que possuem a característica do usuário, por exemplo, quente
O filtro que agirá após a resposta do usuário não filtrará todas as combinações em cima da minha lista geral localizada na pasta locais.json, mas sim na lista criada pelo filtro do clima(climaList), caso contrário, não iria ser personalizado.
E assim por diante com os filtros voltados ao tipo de ambiente e tipo de comida.
Após os filtros temos as funções de verificação sobre a existência de uma combinação em cima da resposta do usuário. -- Como assim a existência de uma combinação?
O número total de combinações que o programa permite são 350, no entanto não existe API pública com tanto dados, e como é uma atividade voltada ao aprendizado, escolhi percorrer o caminho mais longo.
Visto isso, temos como exemplos lúdico a combinação (quente, sul, praia, japonesa), esta combinação não existe no banco de dados, logo será solicitada ao usuário para escolher uma alternativa diferente.
Temos também uma struct, visto que não era necessário no meu códigoc fazer herança ou coisas semelhantes, a forma de escrita era mais simples e abraçava com o projeto.
Dentro dela objetificamos cada linha do locais.json, podendo trabalha com elas chamando pela sua chave.
Além disso, temos a funcão printParamentros que foi auxiliou na debugação e ver se o código estava me entregando o que eu estava pedindo; e a função printURL's que é função que de fato será imprimida ao usuário.
Posteriormente temos a apresentação do Decoder, nos possibilitando mexer na pasta locais.json.
E o restante do código é sobre o manueseio das diferentes respostas e como ele deve lidar para não crashar.
O usuário será exposto a 4 perguntas:
A partir das suas respostas os filtros e funções agirão para fornecer uma ou mais combinações ao usuário.