Вернуть Double, если UITextField пусто или ноль
Все, что я делаю, попробуйте ахххххх, дает мне фатальную ошибку, найденную ноль, при развертывании необязательного значения.
Да, я знаю, что вы никогда не должны принудительно разворачивать, но Xcode заставляет меня положить проклятый !
!
У меня есть поле ввода, которое я вызвал из другой функции, которая должна вернуть Double
:
@IBOutlet weak var inputField: UITextField!
// viewDidLoad():
inputField.keyboardType = .decimalPad
// Fail!
func returnDouble() -> Double {
guard let f = inputField.text else {return 0.00 }
return Double(f)!
}
// Fail!
func returnDouble() -> Double {
// if let f = (inputField.text?.characters.count)! > 0 {} // mega fail
guard let f = inputField.text else {return 0.00 }
return Double(f)!
}
// Fail!
func returnDouble() -> Double {
if let f = inputField.text {
return Double(f)!
} else {
return 0.00
}
}
Я потерян в этот момент. Если поле ввода пустое, я должен получить 0.0
или, если нет, то введенное значение. Я также пытался inputField.hasText
но я вынужден добавить !
и это также дает сбой. Любой второй глаз, пожалуйста?
1 ответ
Это может звучать действительно нелогично.
Если вы получаете доступ textField.text
когда текстовое поле пусто, вы получаете ""
вместо nil
,
Все три ваши попытки проверить, если текст nil
, Но так как текстовое поле текста почти никогда nil
Ваши охранные заявления всегда успешны.
Теперь у вас есть переменная f
который содержит значение ""
, Вы передаете это Double
инициализатор. Вы в основном пишете:
Double("")!
Что ж, Double("")
не удается и возвращается nil
, ты тогда заставь его развернуть. БУМ!
Вместо этого вы должны проверить пустую строку:
func returnDouble() -> Double {
if inputField.text != "" {
return Double(f)!
} else {
return 0.00
}
}