我是iOS开发的新手。我正在练习在视图和控制器之间链接动作/插座。我的问题是我不知道为什么它会显示一些错误。您能看看我的代码并告诉我我所缺少的吗?
我收到以下错误:
可选类型'String?'的值必须解包为'String'类型的值
Coalesce使用“ ??”当可选值包含“ nil”时提供默认值
使用'!'强制展开。如果可选值包含“ nil”,则中止执行
代码如下:
@IBAction func submitAppointmentDetails(_ sender: Any) {
appointmentSetName.text = "Congratulations," + nameField.text + "You have now set up an appointment with us!"
}
正在发生的事情的照片:https://imgur.com/a/WKT4EyE
编辑:@matt这是一个不同的问题,因为您认为这是重复项的线程没有我正在寻找的解决方案,但是该线程中的两个人确实为我提供了解决方案。如果我只是阅读您共享的线程,就永远找不到解决方案。
答案 0 :(得分:0)
nameField.text
提供了一个可选字符串,以便将其串联起来替换
appointmentSetName.text = "Congratulations," + nameField.text + "You have now set up an appointment with us!"
使用
appointmentSetName.text = "Congratulations," + nameField.text! + "You have now set up an appointment with us!"
答案 1 :(得分:0)
nameField.text
的类型为String?
,表示它是一个可选的字符串(它可能包含String
或nil
)。 Swift不允许您连接可选字符串。您必须解开价值,并且基本上已经有了Swift提出的方法来提出问题:
您可以强制解开字符串nameField.text!
。这样,您就告诉Swift'从该可选值中获取字符串值,我确定它不是nil
',但是如果它是nil
,这将使应用程序崩溃。
您可以通过??
的方式使用合并运算符nameField.text ?? "<no_name>"
。这将执行以下操作:如果nameField.text
不是nil
,则文本将正确显示;如果nameField.text
为nil,则将显示"<no_name>"
字符串。