强制从UITextfield解包Optionals

时间:2017-04-30 16:14:56

标签: swift uitextfield

我试图从UITextfield获取一个值,并将其作为可选项返回。我已经尝试了强制展开的建议方法,我仍然接受可选(" WhateverUserInputHere")而不是' WhateverUserInputHere'。我一直在寻找一种方法来确保在检索值之前文本字段不为空,以防止在强制解包时崩溃。截至目前,在用户点击按钮移动到下一个屏幕后检索该值,并且仅当用户开始编辑文本字段时才启用此按钮。但是,如果他们决定删除文本字段中的所有内容,他们仍然可以继续前进。有什么办法可以防止这个/确定按钮只有在用户输入完成并且文本字段不为空后才会启用吗?

// Variable used to store value from textfield    
var nametemp:String?
    var name:String = ""

    @IBOutlet weak var NameInput: UITextField!
    @IBOutlet weak var NextButton: UIButton!
    @IBOutlet weak var TestLabel: UILabel!


// Enables button when textfield has been edited
    @IBAction func NameInputEditingDidChange(_ sender: Any) {
        NextButton.isEnabled = true
    }

   // When button is used, value of textfield is retrieved
    @IBAction func NextButtonVariableTest(_ sender: Any) {
        nametemp = String(describing: NameInput.text)
        name = nametemp!
// Label returns optional value

TestLabel.text = "Hello" + name

    }

}

1 个答案:

答案 0 :(得分:2)

只需使用

self.name = NameInput.text!

self.name = NameInput.text ?? ""

使用String(describing:)后,Optional(...)文字将成为字符串的一部分而不是可选字符串,您将无法将其删除。