为什么是可选的(“文本”) – 斯威夫特

我刚开始使用Swift。 所以我创build了一个带有标签,button和文本字段的简单应用程序。 当您点击button时,应用程序必须使用文本字段的文本更改标签。

class ViewController: UIViewController { @IBOutlet weak var textLabel: UILabel! @IBOutlet weak var textField: UITextField! @IBAction func updateButton(sender: UIButton) { textLabel.text = "Hi \(textField.text) " } 

结果是

嗨可选(“TextOfTextField”)

好的。 所以这是一个非常简单的问题。

我希望有一个人可以帮助我。

在这里输入图像说明

textField的文本可选值,因为文本字段有时可能为空。 所以,使用一个if let解包variables并确保它不是零 – 否则你的程序可能会崩溃:

 if let text: String = textField.text { textLabel.text = text } 

所以这里的问题是,textField的文本是一个可选的,你必须解开使用它。

只需添加一个!textField.text像这样:

 textLabel.text = "Hi \(textField.text!)" 

你的输出现在将是Hi TextOfTextField

希望这可以帮助 :)

还有一种方法是使用Guard来检查它是否不为零。

 guard let nameText = textField.text else { print("break if nil") return } textLabel.text = "Hi \(nameText!)" 

如果条件失败,使用警卫确保您的应用程序提前失败。

我用Swift 3解决了这个问题;

 self.label.text = "\(transaction.amount!)" 

它只是一个简单的使用Swift在这里,你可以只设置1个button,当它点击我的textfeild文本设置成使用Swift 3 Lable

 class ViewController: UIViewController { @IBOutlet weak var textLabel: UILabel! @IBOutlet weak var textField: UITextField! @IBAction func updateButton(sender: UIButton) { textLabel.text = "Hi \(textField.text!)" } 

在标签中设置int值或文本时,尝试下面的代码来摆脱“可选”

为可选(123):

 textLabel.text = NSNumber(value: yourIntValue).stringValue 

为可选(“文本”):

 var str = "hi " str.append(textField.text) textLabel.text = str