Baixando os personagens do Star Wars
help
{{apiData.me.position}}˚ no Ranking
profile pic account_circle
Login Comece agora
Iniciar Desafio Iniciar Desafio Fórum
{{apiData.participant_count}} Participantes
Criado Por: Created by Pedro Peralta
Swift 4
HTTP
JSON
Decodable
JSONDecoder
URLSession
URLRequest
URLSessionDataTask

Baixando os personagens do Star Wars

Objetivo

Utilizando o Xcode 10 e Swift 4 você deverá integrar o seu app com a API pública do Star Wars que pode ser acessada nesse link.

Tópicos

Com este desafio você aprenderá:

  • Realizar requisições HTTP com a classe URLSession
  • Desserializar dados no formato JSON para uma Struct utilizando o protocolo Decodable
  • Default Parameters no construtor de Classes/Structs
  • Execução de blocos de código assíncronos com closures

Requisitos

  • Xcode 10.0
  • Swift 4.2

Tarefas

Dentro da pasta starwars você encontrará o projeto com a estrutura do iOS já criada. Neste desafio a parte visual do aplicativo já está pronta, restando apenas focar no implementação da camada de rede do sistema. Dentro da pasta models encontram-se as estruturas que farão o mapeamento dos campos do JSON da resposta da API para a aplicação.

Suas tarefas nesse desafio serão:

  1. Implementar o protocolo Decodable nas estruturas dentro da pasta models para realizar o mapeamento da resposta da API.
  2. Implementar a requisição HTTP para a API do Star Wars dentro do arquivo CharactersRepository.swift. 2.1. A URL para baixar os dados dos personagens é: https://swapi.co/api/people/. 2.2. No caso de a requisição falhar por algum motivo, o parâmetro passado para a closure deverá ser uma lista vazia. 2.3. No caso de a requisição ocorrer com sucesso, o dado recebido deverá ser desserializado para uma lista de Character e passado como parâmetro da closure para ser mostrado na tela do dispositivo.

Obs: A classe CharactersViewController encontra-se já pronta para receber a lista de personagens, não necessitando qualquer alteração.

Rodando o aplicativo

Para verificar se não há nenhum problema de compilação no projeto, basta digitar o comando:

⌘B (command + B).

Para rodar o aplicativo no simulador/device selecionado, digite o comando:

⌘R (command + R).

Para rodar os testes no simulador/device selecionado, digite o comando:

⌘U (command + U).

codenation code review

Para receber Code review, compartilhe o link abaixo com colegas ou em nosso fórum de discussões:

codenation code review

Para receber Code review, você precisa primeiramente finalizar o desafio.

{{apiData.participant_count}} Participantes

Para definir seu posicionamento no ranking do desafio, utilizaremos a nota mais alta que tiver conquistado nele. Caso outra pessoa participante obtenha a mesma nota que a sua, o critério de desempate será data e hora de envio da mais recente.

empty ranking Ainda não temos participantes suficientes para o ranking!
Aproveite e seja um dos primeiros a participar desse desafio.
CODE:NOME NOTA
{{candidate.position}}. {{candidate.name}} {{candidate.score.toFixed(2)}}%
Everything about Codable in Swift 4

Get rid of that hefty NSCoding code

Default Parameters

Why You Should Love Default Parameter Values

Functional swift

All about Closures

Encoding and Decoding Custom Types

Make your data types encodable and decodable for compatibility with external representations such as JSON.

URLSession Tutorial

Learn how to create HTTP requests

Closures

LanguageGuide - Chapter Closures