一尘不染

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

swift

var firstName: String = “John Appleseed”
if let name = firstName {
print (“Hello, (name)”)
}

第二行出现字符串错误:条件绑定的初始化程序必须具有可选类型,而不是’String’

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


阅读 170

收藏
2020-07-07

共1个答案

一尘不染

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

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

你告诉斯威夫特你想

  1. 尝试展开 firstName
  2. 如果解包结果成功,则将解包结果分配给 name
  3. 如果解包结果成功,请打印 "Hello, \(name)"

换句话说,此构造用于处理可选变量的展开。然而,变量firstName 可选的; 没有什么可解开的,导致Swift抱怨。

2020-07-07