UiTextField падает приложение


#1

При заполнении поля Field цифрами, приложение падает.

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var textField: UITextField!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        label.isHidden = true
        
    }

    @IBAction func press(_ sender: UIButton) {
        
        guard textField.text?.isEmpty == false else { return }
        
        if let _ = Double(textField.text!) {
            
            let alert = UIAlertController(title: "Ошибка", message: "Ошибка ввода данных", preferredStyle: .alert)
            let okAction = UIAlertAction(title: "ОК", style: .default, handler: nil)
            
            alert.addAction(okAction)
            present(alert, animated: true, completion: nil)
            
            print("Формат ввода неверный")
            
        } else {
            label.isHidden = false
            label.text = textField.text
            textField.text = nil
        }
    }
    
}

#2

#4
label.text = "\(textField.text)"

Попробуйте так.


#5

Отфильтруйте сразу в guard, будет меньше возни с опционалом

guard let text = textField.text, !text.isEmpty else {
    return
}

Дальше уже используйте переменную text


#7

Насколько я понимаю, написанная констанка в Guard там и остается, далее константа с именем text за пределами guard не работает.


#8

Все так же падает приложение


#9

Вчера вечером у вас был создан лишний экшн в сториборде, который не реализовывался в коде. Проверьте connection inspector ViewController’a.

Я забыл ответить вам…


#10

Огромное спасибо Уважаемый, теперь я стал на порядок мудрее. Все заработало!


#11

Плохо значит вы понимаете. Это работает так же как и if let variableName, только с if она будет доступна внутри условия, а в случае с guard, переменная доступна после guard.


#12

Почитал еще раз о инструменте guard, спасибо за ваше сообщение мне это помогло!