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

Тинькофф-новости (на swift, с CoreData и без сторонних библиотек)

  • Создать приложение "Тинькофф Новости", которое будет загружать из API https://api.tinkoff.ru/v1/news заголовки новостей банка и показывать их в виде списка.
  • Жест pull-to-refresh приводит к обновлению списка новостей.
  • По тапу на ячейку списка осуществляется переход просмотру полной информации по выбранной новости.
  • Загрузка должна быть постраничной (по 20 новостей). Параметры для постраничной загрузки:
Название Обязательный Описание
First Начало ограничения количества сущностей. Нумерация локальна для возвращаемого массива данных, и начинается с 0. Например, first=20 вернет сущности с порядковыми номерами в списке от 20 до last (или до конца, если last не указан).
Last Конец ограничения количества сущностей. Нумерация локальна для возвращаемого массива данных, и начинается с 0. Например, last=25 вернет сущности с порядковыми номерами в списке от first (или от 0, если first не указан) до 25
  • Пример: https://api.tinkoff.ru/v1/news?first=20&last=40
  • На каждой ячейке должен быть счетчик (число), отражающий количество переходов к просмотру деталей этой конкретной новости
  • При нажатии на каждую новость, она должна открывать новый экран и показывать содержимое (payload.content) загруженное из API https://api.tinkoff.ru/v1/news_content?id={ payload[i].id}
  • Чистый аккуратный интерфейс с обработкой всех возможных исключений (например, отсутствие интернет-соединения) обязателен
  • Приложение должно быть написано на Swift. Без использования сторонних библиотек/подов
  • Данные о новостях и счетчик просмотров необходимо кэшировать, используя CoreData (особое внимание уделяется реализации стека CoreData и работе с записью/чтением данных)
  • Закэшированные данные отображаются перед отправлением запроса на обновление данных
  • Закэшированные данные доступны и после перезапуска приложения