【发布时间】:2017-03-30 16:23:07
【问题描述】:
我一直在搜索 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
}
【问题讨论】:
-
搜索“可选绑定”(
if let)。阅读 Swift 书中的 Optionals 部分。事实上,你应该阅读整本书。 -
我支持这个想法。阅读语言指南。
-
我想这是我不理解的。我作曲 | if let someVariable = textfield.text {//statements} |我试图做的声明是分配 someVariable 字符串。然而,当我在陈述部分重申这一点时,我得到了一个错误。或者,如果我将语句部分留空,当我想使用它时它就无法识别标识符。
-
@HubertMane 请edit您的问题包括(作为文本,而不是图片)您尝试使用的实际代码,并清楚地指出确切的错误消息以及它们发生的位置。
-
您的第二次编辑是正确的。但是您之前的评论声称您遇到了错误。由于您的第二次编辑是正确的方法,您的问题有什么意义?
标签: ios swift uitextfield uitextfielddelegate