Контрольная — Projects 7–9
Собери habit tracker: список привычек, detail screen и счётчик выполнений. Это проверяет model design, navigation и сохранение данных.
Требования
- модель привычки с
id, названием, описанием и числом выполнений; - observable container с Array;
- sheet для добавления;
- NavigationLink к detail screen;
- кнопка увеличения счётчика;
Codable+UserDefaultsили локальный файл;- удаление привычек.
- owner создаёт observable model через
@State, editor использует@Bindableтолько для bindings; - ошибка чтения или записи показывается, а не превращается в пустой список;
- add, complete, delete и повторная загрузка покрыты Swift Testing;
- navigation использует стабильный
id, а не индекс Array.
Самостоятельная работа
Испытание
Задание
Спроектируй data flow так, чтобы все экраны изменяли один источник данных и результат сохранялся после перезапуска.Что уже нужно знать
Struct vs class, `@Observable`, Binding, Codable, sheets и navigation.Показать подсказку 1
Храни `[Habit]` в одном observable class, а в detail screen передавай идентификатор.
Показать подсказку 2
После изменения найди индекс через `firstIndex(where:)` и обнови элемент в исходном Array.
Показать решение
swift
func complete(_ id: UUID) {
guard let index = habits.firstIndex(where: { $0.id == id }) else { return }
habits[index].count += 1
save()
}После проверки переходи к network data в Cupcake Corner →.
Комментарии
Вопросы, находки и подсказки по этой странице.
Войди, чтобы задать вопрос или помочь другим.