我一直在搜索stackoverflow,想知道最好的做法是在没有强制解包的情况下解包textfield.text。它可以做到这一点,但我被告知永远不要强行打开包装。但是当我将textfield.text分配给某些东西时,我只是传递了可选的字符串。有人可以解释什么是最好的吗?谢谢!
编辑:
func configuredMailComposeViewController() -> MFMailComposeViewController {
let passTextField = TextField.text
let mailComposerVC = MFMailComposeViewController()
mailComposerVC.mailComposeDelegate = self
mailComposerVC.setToRecipients(["email@email.com"])
mailComposerVC.setSubject(passTextField!)
mailComposerVC.setMessageBody("Some Text", isHTML: false)
return mailComposerVC
}
我尝试传递文本字段文本并将其传递给电子邮件主题。力展开不会导致错误,但我想知道传递此字符串的最佳做法是什么
编辑2:
func configuredMailComposeViewController() -> MFMailComposeViewController {
let mailComposerVC = MFMailComposeViewController()
mailComposerVC.mailComposeDelegate = self
mailComposerVC.setToRecipients(["email@email.com"])
if let passTextField = textfield.text {
mailComposerVC.setSubject(passTextField)
}
mailComposerVC.setMessageBody("Some Text", isHTML: false)
return mailComposerVC
}
答案 0 :(得分:-2)
如果您确定已经定义了变量,则可以始终展开变量,如果尚未定义该字段,则可能需要采取不同的操作
var someVariableWithWideScope : String = ""
if myTextField.text != nil {
someVariableWithWideScope = myTextField.text!
} else {
// do something specific for nil values
}
当然,如果你要为nil做的就是分配一个默认值,你可以按照其他地方的步骤一步完成
let someVariable = myTextField.text ?? "default"
但该方法不允许您更改执行流程