问题标签 [optional-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
270 浏览

ios - 为什么这个可选绑定不能按预期工作?

我正在将 Swift 引入一个 Objective-C 应用程序。

我有一个 UIViewController 子类,如果某个属性为零,我想在其中隐藏一个按钮。我的 Swift 代码如下所示,使用可选绑定:

我的希望是当 propertyThatCouldBeNil 为 nil 时,if 不满足并且控制将继续到 else。但事实并非如此。事实上,如果我设置一个断点,我看到的是......

后一个是什么让我有点绊倒。我认为它应该是可选的,而不是嵌套的,对吗?

更多信息...

由于我在整个此类中使用 modelObject,为方便起见,它被定义为隐式展开的可选...

ModelObjectClass 实际上是一个Objective-C 类,并且属性是只读的并声明为...

在它的实现中,它实际上充当了另一种现成属性的代理...

而且 someOtherProperty 也可以为空......

关于为什么可选绑定没有按我预期工作的任何见解?

0 投票
2 回答
612 浏览

swift - 从 if 语句中创建一个全局变量

在对 JSON 进行编码时,我用一个if let语句来解包,但我想让一个变量全局可用

这甚至可能吗?如果不是这样,我可以if在这个里面做一个声明,但我认为这不是聪明的,甚至是不可能的。

0 投票
5 回答
1764 浏览

swift - 如何在准备中的 switch 语句中使用可选绑定(segue :)

在 swift 中,您可以使用 switch 语句的一个很酷的功能来根据目标视图控制器的类型prepare(segue:)创建案例:

例子:

但是,如果 segue 是由拆分视图控制器触发的,那么目的地是导航控制器,而您真正想要做的是打开导航控制器的顶部视图控制器的类呢?

我想做这样的事情:

我在多部分if let可选绑定中使用的构造相同。

那是行不通的。相反,我必须像这样做一个相当痛苦的构造:

这行得通,但它似乎不必要地冗长,并且模糊了意图。在 Swift 3 中这样的 switch 语句的情况下,有没有办法使用多部分可选绑定?

0 投票
0 回答
14 浏览

swift - 返回不符合方法返回类型,但它仍然有效

下面的代码片段是从官方文档的Optional Chaining章节中简化而来的。

简而言之,Person类有一个可选的Addressaddress类型的存储属性。通过提供部分/全部 property ,然后可以调用Address类型中的函数buildingNumber并返回一个可选 String 类型的计算建筑物标识符。buildingNamebuildingNumberstreet

让我们关注return "\(buildingNumber) \(street)"函数buildingIdentifier()中的行。

问题1

函数的返回类型是一个可选的字符串,但是函数体的返回是2个可选的字符串,为什么这是允许的?(请看下图是上面代码中##标记的行的打印结果)

在此处输入图像描述

问题 2

我使用了可选的绑定表达式(if let),并且绑定似乎成功了,但是为什么 johnAddressID 没有解包呢?

感谢您的光临和帮助

0 投票
1 回答
267 浏览

ios - Swift3,展开可选(在 SQLite.swift 中)

在最优秀的 SQLite.swift 中,我有

每个“棘手”都是一个Optional<Binding>

我知道解开每个棘手的唯一方法就是这样

可变打印:字符串=“

在这个例子中,我很确定它只能是一个 Int64 或 String(或者是一个字符串);我想人们可能不得不用默认情况来覆盖那里的任何其他可能性。

有没有更快捷的方法?

有没有办法得到一个类型Optional<Binding>

(顺便说一句,特别是关于 SQLite.swift;我可能从 doco 中不知道有一种方法可以“获取 n 列的类型”。这很酷,但是,一般来说,上一段中的问题仍然存在。 )

0 投票
2 回答
1096 浏览

swift - Swift 3 更好的方式来解开一个可选的

现在我有一些如下所示的代码:

我真的不喜欢使用!inmsg!因为这可能会引发异常,我相信。

myStr.removingPercentEncoding如果 myStr 不是 nil 然后解开 msg 而不抛出异常,最好的调用方法是什么?

0 投票
0 回答
32 浏览

swift - 不可变变量和不可变的多个可选绑定

我想为可变和不可变的可选字符串提供多个可选绑定。但是这段代码有错误

错误:在初始化之前使用的常量族

0 投票
2 回答
106 浏览

swift - Swift 可选绑定常量名

我刚刚从 Objective-C 过渡到 Swift,并且一直在为可选绑定编写以下代码,

我的问题是我必须经常这样做,以至于我每次都需要为常量找到一个新名称。有什么方法可以避免代码中的每个可选 X 都使用新名称 tempX?不会像工作一样吗?

0 投票
2 回答
839 浏览

swift3 - 或可选绑定的条件?

我在Swift 3.1文档中看到您可以在以逗号分隔的语句中包含几个可选绑定if,并且它的行为类似于AND运算符。

假设我有两个可选属性,我想检查它们中的哪一个(或两者)是/不是nil,解开非零属性,然后执行一段代码。使用这个:

if仅当两个属性都展开(AND条件)时才执行语句块。但对我来说,至少有一个属性为非零就足以执行if语句块(OR条件)中的代码。但如果我这样做:

但是我没有非零属性的展开值。我想在if代码的语句块中提供未包装的值,以避免那里的可选链接。

哪个是实现这一目标的最佳实践和最紧凑的方法?

0 投票
1 回答
62 浏览

swift - 是否可以在同一条件语句中使用可选绑定中的变量?

我想避免双重嵌套if。

unresolved identifier如果我这样做,我会得到编译器错误。

有什么办法可以使这种条件在一条线上?或者因为我使用的是可选绑定,我是否被迫在if这里嵌套?