avito-tech / internship_ios_2022

Тестовое задание на позицию стажёра в iOS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Тестовое задание на позицию стажёра в iOS + разбор (информация ниже)

Общее описание задания

Написать приложение для iOS. Приложение должно состоять из одного экрана со списком. Список данных в формате JSON приложение загружает из интернета по ссылке, необходимо распарсить эти данные и отобразить их в списке.

Пример возвращаемых данных.

Требование к реализации:

  • Приложение работает на iOS 13 и выше
  • Реализована поддержка iPhone и iPad
  • Список отсортирован по алфавиту
  • Кэширование ответа на 1 час
  • Обработаны случаи потери сети / отсутствия соединения

Внешний вид приложения: по возможности, лаконичный, но, в целом, на усмотрение кандидата.

Требования к коду:

  • Приложение написано на языке Swift
  • Пользовательский интерфейс приложения настроен в InterfaceBuilder (в Storiboard или Xib файлы) или кодом без использования SwiftUI
  • Для отображения списка используется UITableView, либо UICollectionView
  • Для запроса данных используется URLSession

Требования к передаче результатов:

  • Код должен быть выложен в git-репозиторий на github.com и отправлен нам.

Разбор тестового задания:

Пример решения тестового задания можно найти в папке SolutionExample. Чтобы его запустить достаточно вызвать .xcodeproj.

Чуть подробнее про само решение:

  • Для отображения списка используется UITableView (см. Modules/MainPage)
  • Кэширование данных реализовано с помощью связки URLCache + UserDefaults (см. Networking/Client/NetworkClientImpl.swift)
  • Обработка случаем потери сети / отсутствия соединения так же находится в файле NetworkClientImpl.swift
  • Работа с многопоточкой происходит через async\await

About

Тестовое задание на позицию стажёра в iOS


Languages

Language:Swift 100.0%