Контрольная — Projects 1–3
Пора собрать небольшое приложение без пошагового копирования. Ты уже умеешь создавать форму, хранить state, строить элементы через ForEach и выносить оформление в reusable View.
Задача: конвертер единиц
Создай приложение, которое переводит одно значение между единицами одной категории — например, температуру, длину, время или объём.
Требования:
TextFieldдля исходного числа;- два
Picker: исходная и конечная единица; - не меньше трёх единиц;
- computed property с результатом;
- понятное форматирование и
NavigationStack. - enum для единиц вместо произвольных строк;
- понятное состояние для пустого или некорректного ввода;
- проверка VoiceOver и максимального Dynamic Type.
Испытание
Задание
Спроектируй и собери конвертер. Сначала нарисуй список состояний и формулу, затем открывай Xcode.Что уже нужно знать
`@State`, Binding, `Form`, `Picker`, `ForEach`, computed properties и modifiers.Показать подсказку 1
Показать подсказку 2
Показать решение
enum LengthUnit: String, CaseIterable, Identifiable {
case meters = "Метры"
case kilometers = "Километры"
case miles = "Мили"
var id: Self { self }
var metersPerUnit: Double {
switch self {
case .meters: 1
case .kilometers: 1_000
case .miles: 1_609.344
}
}
}
let units = LengthUnit.allCases
var meters: Double {
input * inputUnit.metersPerUnit
}
var result: Double {
meters / outputUnit.metersPerUnit
}После Day 17: добавь тесты
Следующим шагом маршрута будет Swift Testing. После него вернись к чистой функции преобразования и проверь несколько известных пар единиц через parameterized test. Для завершения этой контрольной тесты пока не обязательны.
Критерий готовности
Проверь минимум три известных преобразования, ввод дробного числа и смену обеих единиц. После этого отметь milestone завершённым.
Следующая группа начинается с Project 4 — BetterRest →.
Комментарии
Вопросы, находки и подсказки по этой странице.
Войди, чтобы задать вопрос или помочь другим.