Antes de começar, algumas regras precisam ser seguidas:
- O desafio deverá ser feito em Swift
- A construção deverá ser feita apenas em ViewCode
- Não é permitido o uso de bibliotecas terceiras
- O código deverá seguir a arquitetura MVVM
- Se atente nas regras de negócio descritas
Neste repo, você encontrará um projeto pré-pronto para iniciar o desafio, onde mexerá em duas controllers MainViewController
e DetailViewController
nas quais serão onde haverá as modificações (descritas mais abaixo).
O desafio consiste em criar duas telas simples, preenchendo o contéudo com o consumo de uma API, que neste caso, será a de Pokémon.
Comece realizando um fork deste repositório para sua conta, realize as modificações e abra um Pull Request de volta para que seja analisado. Ao abrir, deverá conter duas screenshots, uma de cada tela. Boa sorte!!!
-
- Deverá utilizar uma UITableView em toda a tela.
- Ao entrar na tela, deverá fazer uma requisição que preencha esta UITableView, requisição GET da rota
https://pokeapi.co/api/v2/pokemon/
.
{ "results": [ { "name": "bulbasaur", "url": "https://pokeapi.co/api/v2/pokemon/1/" }, { "name": "charmander", "url": "https://pokeapi.co/api/v2/pokemon/4/" }, { "name": "squirtle", "url": "https://pokeapi.co/api/v2/pokemon/7/" } ] }
- Ao realizar o parse e colocar na UITableView, é necessário que mostre no formato
Index - Nome
, onde Index é a posição do item que voltou na requisição e o Nome é o camponame
. - Cada item da lista deverá ser colorido. Onde:
- Se seu
Index
for impar, o seu background deverá serblue
. - Se seu
Index
for par e multiplo de 10, o seu background deverá serred
. - Se seu
Index
for par e não é multiplo de 10, o seu background deverá seryellow
.
Obs: Adapte a cor do texto se necessário para estar legível na tabela. - Se seu
- Ao clicar no item da UITableView, deverá abrir a
DetailViewController
passando o campourl
da primeira requisição feita do item clicado.
-
- Ao entrar na tela deverá fazer uma requisição que traga as informações do pokémon, realizando uma requisição GET utilizando a
url
que foi passada da tela anterior. Ex: Se eu clicar no1 - bulbasaur
, deveria fazer a requisição parahttps://pokeapi.co/api/v2/pokemon/1/
. - Após ter os dados, deve ser preenchido os campos na tela com os dados que vieram da API (Para o caso acima, este seria o JSON).
{ "id": 1, "height": 7, "name": "bulbasaur", "weight": 69 }
- Preencha a imagem da tela com o seguinte critério:
- Se o campo
id
for impar e não é multiplo de 5, a imagem deverá utilizar o assetbulbasaur
. - Se o campo
id
for impar e é multiplo de 5, a imagem deverá utilizar o assetcharmander
. - Se o campo
id
for par e não for ímpar, a imagem deverá utilizar o assetsquirtle
.
- Se o campo
- O nome deve ser sempre com a primeira letra maiúscula.
- Implemente acessibilidade na imagem, deverá ser lido como um
botão
e seu texto deverá ser utilizado o camponame
. - Implemente acessibilidade no clique do botão de navegação voltar, deverá ser anunciado que a tela está fechando (Seja criativo no texto)!
- Ao entrar na tela deverá fazer uma requisição que traga as informações do pokémon, realizando uma requisição GET utilizando a
- Adicione testes unitários quando possível usando XCTest.
- Melhore o que você já fez, complemente com os estados de loading e erro.
- Salve a primeira requisição em um cache, ao fechar e abrir o aplicativo, verifique se existe algo no cache antes de fazer a requisição, caso houver use este dado, caso não prossiga com a requisição.