Критерии оценки:
- Качество кода(чистота, именование переменных(abc - не подойдет, сразу 0 за код-стайл));
- Возможность расширения функционала(чтобы Ваш код возможно было улучшать, не сломав предыдущего функционала);
- Решение задания.
Инструкция к домашкам:
- Сделать Fork ветки к себе в репозиторий;
- Выполнить основную задачу в xCode Project;
- Выполнить доп задачи на высшие функции в Playground Swift(далее в проекте);
- Отправить Pull Request в эту ветку(HW103_ФИО);
- При сдаче задания после дедлайна, баллов будет много-меньше и проверяться оно будет больше 1 недели(также пересдать ее уже вряд ли будет можно);
- Пересдать код после получения комментария можно в течение N(уточнится позже) дней, при этом баллы не потеряются, возможность на ошибки у Вас имеется и поощряется.
Клиент, который является руководителем проекта, обратил внимание на популярные приложения для управления задачами, такие как Todoist и Wunderlist. Он хочет, чтобы наше приложение имело аналогичную функциональность списка задач.
Каждая ячейка в таблице должна представлять задачу с ее названием и описанием. Клиент хочет, чтобы при нажатии на ячейку открывалось окно деталей задачи (Task Detail Screen), где пользователь может редактировать задачу. Это взаимодействие между ячейкой и экраном деталей задачи должно осуществляться через делегат.
Кроме того, клиент хочет, чтобы данные в списке задач обновлялись динамически с использованием Diffable Data Source, чтобы обеспечить эффективное обновление интерфейса при добавлении, изменении или удалении задач.
Требования:
- Разработать экран списка задач (Task List Screen) с использованием таблицы для отображения задач в виде ячеек.
- Реализовать делегат для взаимодействия между ячейкой и экраном деталей задачи.
- Создать экран деталей задачи (Task Detail Screen), где пользователь может редактировать задачу.
- Использовать Diffable Data Source для эффективного обновления данных и интерфейса списка задач при изменении задач.
- Обеспечить передачу данных между экранами для обновления списка задач и обратно.
Дополнительная задача: Добавление фильтрации и сортировки в список задач(вот тут и нужны функции высшего порядка)
Требования:
- Реализовать возможность фильтрации задач по различным критериям, предоставив пользователю выбор через интерфейс.
- Добавить опцию сортировки задач по нескольким критериям, таким как дата создания, дата завершения или приоритет.
- Предоставить пользователю удобный и интуитивно понятный способ настройки фильтрации и сортировки в интерфейсе приложения.
- Обеспечить обновление списка задач в соответствии с выбранными параметрами фильтрации и сортировки.