Skip to content

Latest commit

 

History

History
32 lines (21 loc) · 2.61 KB

File metadata and controls

32 lines (21 loc) · 2.61 KB

Todo list

Предпосылки

Реализация Todo списка это типичный пример для демонстрации какой либо технологии, своеобразный hello world.

Исходные данные

Приложение содержит один экран TodoListView с подключенной вью моделью TodoListViewModel.

Задание

Основное: Необходимо добавить на экран список задач и отдельную строку для добавления новой задачи.

Строка добавления новой задачи должна состоять из поля ввода и кнопки "Добавить". Каждая строка списка должны отображать текст задачи. Невыполненные задачи можно отображать стандартным шрифтом, а выполненные серым зачеркнутым (опционально). При клике по задаче она должна менять состояние выполнена/невыполенена. Все состояние должно быть в TodoListViewModel.

Дополнительные: Реализовать хранение задач на диске. Добавить класс TodoStorage c методами addTask, updateTask и getTasks. Сохранение должно проходить на глобальной очереди, а методы TodoStorage потокобезопасны и возвращать Publisher. Вся работа с потоками должна быть реализована с помощью Combine. Получать список задач с диска не нужно делать один раз. В дальнейшем при добавлении новой задачи или обновлении имеющейся следует изменять и копию хранящуюся в памяти и данные на диске.

Подсказки

  • Для отображения списка можно использовать List или VStack.
  • Данные для каждой задачи удобно хранить в отдельных объектах. Для того что бы List или VStack могли отображать эти объекты им необходимо реализовать протокол Identifiable.
  • Строку добавления новой задачи можно отображать в первой строке списка.