错误:条件绑定的初始化程序必须具有可选类型,而不是'字符串'

时间:2016-04-23 11:16:12

标签: ios iphone swift

var firstName: String = "John Appleseed"
if let name = firstName {
    print ("Hello, \(name)")
}
第二行的

字符串错误:条件绑定的初始化程序必须具有可选类型,而不是'字符串'

如何决定是使用可选变量还是非可选变量?

2 个答案:

答案 0 :(得分:3)

首先,让我们考虑if let构造的含义。当你写

if let name = firstName {
    print ("Hello, \(name)")
}

你告诉Swift你想要

  1. 尝试展开firstName
  2. 如果展开结果成功,请将展开结果指定给name
  3. 如果展开结果成功,请打印"Hello, \(name)"
  4. 换句话说,这个构造用于处理可选变量的展开。但是,变量firstName 不是可选;什么都没有解开,导致斯威夫特抱怨。

答案 1 :(得分:2)

var firstName: String? = "John Appleseed"
if let name = firstName {
print ("Hello, \(name)")
}

添加?以使其成为可选项。

检查answer in this link以了解在哪里使用可选项以及实际上是什么

希望这会有所帮助:)