/NTPro

Тестовое задание

Primary LanguageSwift

Xcode Swift IOS
Target Version
UIKit UITableViewDiffableDataSource MVP GCD AutoLayout

Работа с большим потоком данных

Тестовое задание

Description

Очень удобно использовать в мороз для согрева рук, или утром чтобы пожарить яичницу.

Каждые 2 секунды формируется коллекция примерно с 2000 случайных объектов, у которых могут быть одинаковые ID. Объекты с совпадающими ID заменяются новыми данными. Эти данные сортируются по указанным пользователем данным. Приложение сделано так, что даже с 300 000 объектов, интерфейс приложения не тормозит и пользователю комфортно с ним работать.

Описание используемых технологий

  • Алгоритмы и структуры данных, для оптимизации работы на сколько это было возможно с таким потоком данных.
  • Реализована пагинация.
  • Многопоточность приложения построена на GCD. В планах переписать на NSOperation, так как при огромном потоке данных (более 500 0000) нужна отмена сортировки и получения нового пакета, чтобы дать пользователю возможность отсортировать так, как он хочет. Сейчас реакция сортировки при таких условиях медленная, так как идёт ожидание завершения предыдущей операции, чтобы не обращаться к уже использующемуся массиву данных.
  • Приложение написано на архитектуре MVP.
  • Вместо стандартного data source у теблицы используется UITableViewDiffableDataSource
  • Вёрстка итерфейса сделана полностью кодом с помощью AutoLayout
  • Весь дизайн взят из ТЗ.

Installations

Clone and run project in Xcode 14 or newer

Screenshots

Demo