Что я упускаю из виду, когда пытаюсь учесть ноль?
Я перечитывал документацию Swift несколько раз, но боюсь, что упускаю из виду что-то простое.
Функция ниже обрабатывает очень хорошо и правильно вызывает метод updateCalorieBalance, если есть значение в поле caloriesConsumed.text. Но, конечно, вылетает, если caloriesConsumed.text равен нулю.
Я получаю сообщение об ошибке: Неустранимая ошибка: неожиданно найден ноль при развертывании необязательного значения.
Ваша помощь очень ценится.
@IBAction func buttonThree(sender: AnyObject) {
var calConsumed: String?
if let calConsumed = caloriesConsumed.text {
calorieCount.updateCalorieBalance(Double(calConsumed)!)
balanceLabel.text = "New Balance: \(Int((calorieCount.getCalorieBalance())))"
} else {
balanceLabel.text = "Please enter calories to add."
}
caloriesConsumed.resignFirstResponder()
}
1 ответ
calConsumed не должен быть необязательной строкой. На самом деле "if let" создает свою собственную переменную, так что теперь у вас есть две переменные с одинаковым именем...
Double (calConsumed) возвращает nil, если calConsumed является пустой строкой или строкой, не содержащей числа.! то, что вы используете, приведет к сбою.
if let calText = caloriesConsumed.text,
calNumber = Double (calText) {
...
}
(Не проверено и даже не скомпилировано).