Первая проблема: вы должны проверить, является ли свойство text
пустым String
, поэтому вам нужно использовать ""
, а не строку с пробелами if h1 == " "
(вы также можете использовать предназначенное isEmpty
свойство, которое возвращает true
, если строка ""
).
Далее, преобразование из String
в Int
может завершиться неудачей, поэтому оно возвращает необязательно.Вы можете использовать необязательную привязку или установить значение по умолчанию для безопасного назначения значения из значения, возвращенного при инициализации
@IBAction func Total(_ sender: Any) {
let h1 = hole1.text!
if h1.isEmpty {
print(0)
} else {
let int = Int(h1) ?? 0
print(int)
}
}
, которое можно сократить только до этого
@IBAction func Total(_ sender: Any) {
let int = Int(hole1.text!) ?? 0
print(int)
}
, поскольку, если text
являетсяпустая строка, Int
не может быть построена
Последняя проблема, которую я вижу, заключается в том, что вы сохраняете необязательный String?
в UserDefaults
.Не делайте этого, смело делайте принудительную распаковку, используя восклицательный знак, поскольку text
свойство UITextField
никогда не nil
@IBAction func saveButton(_ sender: Any) {
UserDefaults.standard.set(hole1.text!, forKey: "hole1enter")
}