Desafio final do Bootcamp iOS da UseMobile. Aplicativo de 4 telas responsável por fazer requisições e popular uma API de animais.

Overview

Desafio Final - Bootcamp UseMobile iOS

Desafio final do Bootcamp iOS da Use Mobile. Aplicativo de 4 telas responsável por fazer requisições e popular uma API de animais.

Video.AnimalsApp.MP4

Como rodar

  • Acessar o XCode através do arquivo AnimalsApp.xcworkspace
  • Deployment Target iOS 13.0

Principais Tecnologias

  • Swift e UIKit
  • Arquitetura MVVM
  • Testes unitários
  • Gerenciador de dependências Cocoapods
  • Alamofire para requisições API, Lottie para fazer animações e SDWebImage para baixar imagens de forma assíncrona e cache em memória.

Sobre o aplicativo

O aplicativo possui 3 telas principais: Home, Cadastrar e Favoritos, e 1 tela de detalhes, a qual pode ser acessada clicando em qualquer animal.

  • Na tela de Home, listamos os animais cadastrados na API em uma table view. Além disso, usamos SDWebImage para carregar as imagens das células de forma assíncrona e cacheada.

  • Na tela de Cadastro, há uma scroll view que se ajusta ao tamanho do teclado de forma automática. Também adicionamos a funcionalidade de mudar o campo do formulário por meio do “seguinte” no teclado, além disso, ao clicar fora dos campos de texto, o teclado desaparece.

  • Na tela de Favoritos, são exibidos os animais favoritados, que são persistidos por meio do Core Data. Fizemos a classe do Core Data como um singleton, para que fosse instanciado apenas uma vez e utilizado pela Home e pela tela de Favoritos.

  • Como era possível favoritar de ambas as telas, utilizamos um delegate dentro da classe do Core Data para notificar ambas as ViewModels de que houve uma alteração, e a “estrelinha” de favoritos deveria ser atualizada.

  • As requisições da API (GET e POST) foram realizadas utilizando Alamofire. E para conformar nosso Model com o JSON, utilizamos Coding Keys.

  • Por fim, realizamos testes unitários e, para que isso fosse possível, fizemos mocks do serviço e do Core Data.

You might also like...
A WIP Swift wrapper for Discord's Bot API.

Quickcord Quickcord is a WIP Swift wrapper for Discord's Bot API. Features (As of right now) Connecting the the gateway and identifying. Literally eve

Elegantly connect to a JSON api. (Alamofire + Promises + JSON Parsing)
Elegantly connect to a JSON api. (Alamofire + Promises + JSON Parsing)

⚠ Important Notice: Farewell ws... hello Networking ! Networking is the next generation of the ws project. Think of it as ws 2.0 built for iOS13. It u

An unofficial supported Swift client library for accessing News API.

An unofficial supported Swift client library for accessing News API.

Swift package for adding API Key requirement to vapor backends.

APIKeyMiddleware Swift package for adding API Key requirement to vapor backends. Features ✅ Supports an array of keys ✅ Supports overriding thrown err

A modern Swift wrapper for Instagram Private API.
A modern Swift wrapper for Instagram Private API.

Swiftagram is a wrapper for Instagram Private API, written entirely in (modern) Swift. Instagram's official APIs, both the Instagram Basic Display API

To practice URLSession to fetch json data from open weather API
To practice URLSession to fetch json data from open weather API

⛅️ weatherApp-iOS-practice 📌 기능 상세 도시 이름을 입력하면 현재 날씨 정보를 가져와 화면에 표시되게 만들어야 합니다

A sample application to list the movie from API
A sample application to list the movie from API

MovieManager This is sample application to list the movie from API. Xcode 13.2 S

A lightweight generic networking API written purely in Swift

SwiftyNetworking SwiftyNetworking library is a generic networking library writte

A web API client in Swift built using Async/Await

Get A modern web API client in Swift built using Async/Await and Actors. let cli

Comments
  • Refactor/coredata

    Refactor/coredata

    • Refactor coredata to be singleton
    • Add delegate protocol to coredata to update Home ViewModel and Favorites ViewModel in case a favorite animal is added or removed.
    • Conform homeVM and favoritesVM to coredata delegate protocol
    • Change favorite button pressed protocol
    opened by lauramarson 0
Releases(v1.0)
Owner
Laura Pinheiro Marson
Laura Pinheiro Marson
APIProvider - API Provider Package for easier API management inspired by abstraction

APIProvider Using APIProvider you can easily communicate with all API endpoints

null 1 Apr 21, 2022
Approov Integration Examples 0 Jan 26, 2022
🌸 Powerful Codable API requests builder and manager for iOS.

This lib is about network requests with blackjack, roulette and craps! Using it you will be able to convert your massive API layer code into an awesom

CodyFire 251 Jan 8, 2023
The civilized way to write REST API clients for iOS / macOS

The elegant way to write iOS / macOS REST clients Drastically simplifies app code by providing a client-side cache of observable models for RESTful re

Bust Out 2.2k Nov 20, 2022
An iOS library to route API paths to objects on client side with request, mapping, routing and auth layers

WANetworkRouting Developed and Maintained by ipodishima Founder & CTO at Wasappli Inc. Sponsored by Wisembly A routing library to fetch objects from a

null 10 Nov 20, 2022
The official iOS client library for api.video

api.video iOS client api.video is the video infrastructure for product builders.

api.video 8 Dec 2, 2022
Server-side Swift. The Perfect core toolset and framework for Swift Developers. (For mobile back-end development, website and API development, and more…)

Perfect: Server-Side Swift 简体中文 Perfect: Server-Side Swift Perfect is a complete and powerful toolbox, framework, and application server for Linux, iO

PerfectlySoft Inc. 13.9k Jan 6, 2023
Access Xcode Server API with native Swift objects.

Xcode Server SDK Use Xcode Server's API with native Swift objects. First brought to you in Buildasaur, now in an independent project. This is an unoff

Buildasaurs 401 Dec 29, 2022
Postie - The Next-Level HTTP API Client using Combine

Postie - The Next-Level HTTP API Client using Combine Postie is a pure Swift library for building URLRequests using property wrappers.

kula 28 Jul 23, 2022
macOS VM for Apple Silicon using Virtualization API

MacVM macOS Monterey added support for virtualizing macOS with Apple silicon host. This project provides an example project for the setup. Currently o

Khaos Tian 1.2k Jan 4, 2023