当前位置: 首页 > 面试题库 >

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

徐阳炎
2023-03-14
问题内容

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

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

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


问题答案:

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

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

你告诉斯威夫特你想

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

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



 类似资料:
  • 问题内容: 这是我更新到后遇到的一个有趣的问题 错误就在网上 问题答案: 编译器告诉您不能使用,因为它完全没有必要。您没有要打开的任何可选选项:不是可选的,并且该属性也不是可选的。仅用于解开可选项。如果要创建一个名为的新常量,请执行以下操作: 但是,旁注:具有一个名为参数的参数和一个名为局部常量的参数会造成极大的混淆。这样可能会更好:

  • 问题内容: 我试图从我的数据源和以下代码行中删除一行: 导致以下错误: 条件绑定的初始化程序必须具有Optional类型,而不是UITableView 这是完整的代码: 我应该如何纠正以下问题? 问题答案: / 可选绑定仅在表达式右侧的结果为可选时有效。如果右侧的结果不是可选的,则不能使用此可选绑定。此可选绑定的目的是检查变量,并且如果不是,则仅使用该变量。 在您的情况下,参数被声明为非可选类型。

  • 问题内容: 这段代码适用于第一个XCode 6 Beta,但在最新的Beta中,它不起作用,并显示以下错误 : 这就是此类的初始化方式: 我坚持下去..最简单的解决方法是什么? 问题答案: 是SKSpriteNode类中唯一指定的初始值设定项,其余都是方便的初始值设定项,因此您不能在它们上调用super。将代码更改为此: 此外,我会将所有这些整合到一个初始化器中。

  • 2018-08-29 10:55:45.832警告54751---[nio-8080-exec-1]O.H.Engine.jdbc.spi.sqlexceptionHelper:SQL错误:0,SqlState:42804 2018-08-29 10:55:45.833错误54751--[nio-8080-exec-1]O.H.Engine.jdbc.spi.sqlexceptionHelper:

  • 你好,我在从github到我的项目中实现一些代码源时遇到了问题,所以。。。我正在尝试构建一个管道,然后创建StreamStage来读取源代码,并使用项目中的方法构建一个queuesink,我总是遇到同样的错误“线程中的异常”main“java.lang.IllegalArgumentException:”mapFn“必须可序列化” 我正在阅读关于Hazelcast Jet序列化的文档,一切似乎都很

  • 问题内容: 据报道,这段代码在这里和这里都有效,但是我似乎无法使其正常工作。 IBOutlet已连接到情节提要中的对象。命名了prototypeCell,因此我可以将其使用,并将其自定义类属性设置为。 First Error(我可以解决,但上面的链接都不需要它,这使我觉得我做错了。对吗?): 第二个错误(有趣的错误): 单元类别代码: 初始化代码: 问题答案: 第一个初始化程序的正确签名是: 请注