MusicPlaylist

Стек используемых технологий:

  • Swift
  • UIKit
  • MVC

Исходное задание

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


Описание

  • при старте МП загружаем данные json по ссылке, сохраняем в локальный кэш. Парсим, строим модель данных для таблицы, показываем таблицу, при скролле асинхронно догружаем картинки и кэшируем их локально.
  • Картинки каждый раз сначала пытаемся показать из кэша. Если пусто, то грузим с сервера
  • при старте МП с нуля (после срубания из памяти) сразу же чистим кэш картинок и json данные. Делаем в этом случае имитацию работы "с нуля", как после первичной установки приложения
  • локальный поиск должен идти по title и subtitle данных для ячеек таблицы. При поиске на экране остаются в таблице только удовлетворяющие поиску ячейки.
  • на время первичного отсутствия картинки в ячейке в ее потенциальном центре до загрузки отображается активный activity indicator
  • Используем MVVM для работы с таблицей, в проекте должен быть класс playListDTO Decodable для Парсинга данных json, playListModel - инициализируется через playListDTO, viewModel для таблице на основе данных playListModel, Картинки и данные json кэшируем просто на диск в виде файлов.
  • при долгом нажатии на ячейку должно появиться стандартное контекстное попап меню с двумя пунктами "редактировать" и "скрыть". при нажатии редактировать должна появиться клавиатура, над ней поле вода текста (сразу заполнено текущим значением title из ячейки) и справа кнопка "готово". Нажатие на кнопку должно убирать клавиатуру и менять title в редактируемой ячейке
  • все делаем в коде, без сторибордов и xib, только autolayout