Основная ошибка в том, что вы пытаетесь преобразовать UITextField
объект в число, но вы должны получить значение из текстового ввода через text
accessor .Примерно так: let distanceSquared : Double = pow(distanceTextField.text, 2)
.
Второе, свойство text
является необязательным, поэтому лучше проверить, что у вас есть значение, например, с оператором guard
.Примерно так guard let distance = distanceTextField.text else { return }
в начале func calculateButtonPressed(...)
.В случае пустого ввода ваша функция не будет выполнена (обычно это называется «ранний возврат»).
В-третьих, рекомендуется проверять, является ли текст действительным числом (Double
* 1015).* function возвращает необязательное значение, если вы передаете String
, и оно равно nil, если входное значение не является числом), поэтому окончательное решение может выглядеть примерно так:
@IBAction func calculateButtonPressed(_ sender: UIButton) {
guard let distance = Double(distanceTextField.text) else { return }
let distanceSquared : Double = pow(distance, 2)
let curvatureFormula : Double = inchPerMile * distanceSquared
let convertionInFeet : Double = curvatureFormula / 12
let roundedNumber = String(format: "%.2f", convertionInFeet)
print(roundedNumber)
targetHiddenInFeet.text = roundedNumber
}
PS Кроме того, я удалилreturn
оператор в конце функции, потому что в этом нет необходимости (ваша функция возвращает Void
по умолчанию).
Удачного кодирования!