问题标签 [forced-unwrapping]

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 回答
456 浏览

ios - 如何在展开可选值时调试“nil 的致命错误”?

这是我正在编写的第一个真正的应用程序,我不明白为什么我在打开一个可选项时会收到这个“nil”错误。

在我发布代码之前,这里有一个简单的费用计算器的想法。

我有两个文本字段(expenseLabel 和 guestLabel)。在应用程序开始时,两者都应该是空的。这是第一个问题。如果用户不小心按下了计算按钮,我会收到以下错误:

在展开可选值时意外发现 nil

(这是我在** ... ** 中标记的第一行代码)。

只要用户在应用程序开始时输入数字或标签不为空(例如,我在情节提要中输入一个数字)就不会发生这种情况,但由于某种奇怪的原因,我在第二次得到相同的 nil 错误当我更新 resultLabel.text 时,到最后一行(再次标记在 ** ... ** 内)。Xcode 用以下额外信息标记了这一行:

线程 1:EXC_BAD_INSTRUCTION(代码=EXE_I386_INVOP,子代码=0x0)

这是代码:

它实际上并没有太多代码,但我不明白为什么会出现这个错误。我什至尝试了以下方法,并在其他所有内容之前介绍了两个变量费用和客人:

我认为这将有助于消除 nil 展开错误,但这也不起作用。

我现在感到很无助,因为这又不是很多代码,而且出于某种原因,我认为根本没有工作。

0 投票
2 回答
116 浏览

swift - 可选和展开

我想要完成的是 - 我有两个文本字段,如果用户名文本字段或密码字段,我想向print()控制台发送消息。我注意到的第一件事是文本字段是可选的,因为它们当然可以是空的。那么有人可以向我解释以下代码示例背后的一些语法和推理吗?.isEmpty.isEmpty

Q1:为什么我必须在之后打开包装.isEmpty

Q2:为什么当您包含 or 运算符时此语法不起作用?

Q3:为什么我不能在 之后直接解包.isEmpty

0 投票
2 回答
3049 浏览

swift - 如何处理 switch 语句中的选项

我有以下代码:

这不编译,最后一行触发了这个错误:

可选类型“字符串?”的值 未拆封;你的意思是用'!' 或者 '?'?

您如何建议在强制展开的情况下处理此问题lValuerValue

0 投票
1 回答
58 浏览

swift - 如果 Facebook 个人资料无法返回,Swift 2.3 崩溃

在我的应用程序上,用户有个人资料图片,如果使用 Facebook 登录,则个人资料图片设置为当前 Facebook 个人资料图片。我遇到的问题是,如果用户在没有 Facebook 的情况下登录应用程序,则在尝试检索 Facebook 数据时应用程序崩溃。我怎样才能使它安全,所以如果无法获取 Facebook 数据,则可以将个人资料图片设置为空白。

0 投票
1 回答
770 浏览

swift - 什么时候应该使用断言和前置条件,什么时候可以使用保护语句、强制展开和错误处理?

我已经在 swift 中阅读了“前提条件”和“断言”之间的区别guard但仍然无法在(展开即& ! +错误处理的不同方式)与断言之间划清界限。

如果我希望我的应用程序不再工作,我不能强制打开某些东西并替换为先决条件吗?

  1. 是不是因为我们想要停止/退出应用程序并且基本上不希望任何控制流或状态更改,因此我们使用断言/前提条件,这也恰好伴随着人类可读消息的简单记录(帮助我们不经常print写)?
  2. 我们使用断言的东西是至关重要的,守卫语句最终是一个控制流系统,即使你的函数提前返回并不一定意味着你的应用程序应该崩溃。

如果它超出了nils 的范围,比如你想要一个String并且用户给你一个Int,那么你可以使用error handling

编辑:

我不是在征求意见,我问这个只是为了了解对上述替代方案的便利断言。编号列表是我问题的核心。

0 投票
2 回答
824 浏览

ios - Swift 展开的值仍然显示为可选

我正在努力让名称值在没有Optional(...). 我以为我正在解开它们,但我无法摆脱可选的。我在 StackOverflow 上找到了一个解决方案,但在那种情况下,涉及到了一个as?问题,这里不是这种情况。有问题的代码如下。有什么办法可以解开这些吗?我假设我遗漏了一些明显的东西。谢谢。

*编辑:这是构建字典的代码:

*编辑:我还应该提到,这只发生在 Swift 3 中。它在 Swift 2.2 中运行良好。

0 投票
2 回答
260 浏览

swift - 如何快速理解`!`和`?`?

我是 swift 的新手。当我声明一个变量时,或者当我获得一个实例的属性时,我发现“!” 和 ”?” 无处不在。在Objective-C中做这样的事情很容易,你甚至可以不知道“id”类型的类的类型。为什么我们需要!?

我想知道设计!和的原因?,而不是如何使用它们。拥有可选类型有什么好处?

0 投票
2 回答
456 浏览

ios - Swift NSObject 属性不是可选的,但它打印可选

上述代码的输出是:

所有地方可选(“地铁”)

在下面的代码中, var 不是可选的。但是 print 语句将其打印为可选。它不应该打印所有地方“地铁”吗?

0 投票
2 回答
158 浏览

swift - 为什么没有分配隐式展开的可选?

在下面的代码中,为什么 5 没有分配给 "somevar" ?

背景:

somevar被声明为可选变量,这意味着如果此变量为 nil,则使用此变量的命令将被忽略。

例子:

为了在我们自己的风险下强制执行命令,我们使用“隐式解包可选”,以便我们确定命令将被执行,在这种情况下执行以下行

致命错误:在展开可选值时意外发现 nil

执行此行时,为什么没有将“5”分配给“somevar”而是发生致命错误?

0 投票
1 回答
180 浏览

swift - 如何避免在 Swift 中没有嵌套循环的情况下强制向下转换和展开选项?

每当我避免强制向下转换和展开选项时,我都很难尝试不编写嵌套循环。有没有办法做到这一点?

例子: