Я делаю вид сборщика, чтобы отобразить диапазон возрастов для выбора пользователями.
Возрастные диапазоны:
от 1 до 24 месяцев
от 3 до 17 лет
У меня уже есть вся логика и модель, и приложение работает.От 1 до 24 месяцев отображается правильно, но значения, отображаемые в диапазоне лет, отображаются неправильно.Он показывает «3 года» для большинства разделов и «4 года» для последних трех рядов.Вот мой код:
По какой-то причине для двух других утверждений if мне дали ошибку, которую мне пришлось принудительно развернуть в значения (если кто-то может объяснить, что это было бы здорово).Третье утверждение if заключается в том, где проблема заключается в значениях.
Модель
struct Age {
var ageMonths: String
static var all: [Age] {
var ageArray = [Age]()
for months in 1...24 { // adds months 1 through 24
ageArray.append(Age(ageMonths: String(months)))
}
for months in Array(stride(from: 36, through: 204, by: 12)) { // adds years 3 through 17
ageArray.append(Age(ageMonths: String(months)))
}
return ageArray
}
}
Просмотр контроллера
var age: Age?
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if Int(Age.all[row].ageMonths) == 1 {
return Age.all[row].ageMonths + " month old"
} else if Int(Age.all[row].ageMonths)! > 1 && Int(Age.all[row].ageMonths)! < 36 {
return Age.all[row].ageMonths + " months old"
} else if Int(Age.all[row].ageMonths)! >= 36 {
return Age.all[row/12].ageMonths + " years old"
}
return ""
}