问题标签 [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 投票
3 回答
70 浏览

ios - 如何正确解开我在 UILabels 中使用的变量?

编辑 1:在帖子底部添加了我的修订 cellForRowAtIndexPath 代码

编辑 2:添加了我的新编辑元素代码

我很难正确解开我的 UILabel 文本输入,所以我的所有文本都说“可选(作者姓名)”(例如,这是一个报纸的应用程序)。我试图以不同的方式强制解开我的变量,但无法使其工作。

我的 UILabel 的文本输入是通过以下方式创建的。对应的类是“EditorialElement”,它具有以下属性定义:

然后,我使用这个类从我的 JSON 文件中检索数据,并将其解析为“edititorialObjects”数组(对不起所有的评论和错误的间距):

然后我只是在我的 cellForRowAtIndexPath 方法中使用这些对象作为我的标签:

我应该在哪里强制解开我的变量?

编辑 1:修改后的代码

编辑 2:新的编辑元素代码

0 投票
1 回答
124 浏览

swift - 展开 ViewController 时发现 nil 可选

我正在构建一个非常简单的 swift 应用程序,它使用两个视图控制器——“ViewControler”和“AnimalChooserViewControler”。第一个有一个简单的标签和一个带有一个项目的工具栏,它将用户转移到第二个屏幕。第二,有自定义选择器。该应用程序的全部目的是使用输出 UILabel 显示用户从第二个视图控制器到第一个视图控制器中选择的任何内容。我不得不提到我正在使用 xCode 6.4 (ios8)

我的问题是当我尝试将presentedViewController 转换为!ViewController 应用程序因“致命错误:在展开可选值 (lldb) 时意外发现 nil”异常而崩溃。如何解决这个问题,有什么建议吗?这是我在 ViewControler 中的代码:

这是我在 AnimalChooserViewControler 中的代码

0 投票
2 回答
338 浏览

xcode - 想从解析中查询一个有时可能为空的数组,但 xcode 不会让我

我想保存对象[“朋友”],它是一个从用户名解析到的数组

但我收到错误:“致命错误:在展开可选值时意外发现 nil”,当数组为空时,这意味着用户没有任何朋友,但当用户至少有 1 个或更多朋友时它可以正常工作。

0 投票
0 回答
27 浏览

swift - 不打印所选日期以快速标记

大家好,我有一个日期选择器计算应用程序,我想知道为什么所选日期没有打印到我的文本标签上。这是我的代码

如果我强制展开作为测试,它可以使用(显然这不安全)

关于如何让计算出的日期出现或让我知道我在这里缺少什么的任何想法

谢谢

0 投票
2 回答
53 浏览

swift - 相等运算符是否意味着强制展开?

注意最后两行:

这是否意味着我们在比较时不需要打开可选的包装?

0 投票
1 回答
84 浏览

ios - 为什么不守卫创建未包装的var?

为什么我需要unwrapped在最终的 return 语句中解包变量?守卫不应该处理吗?

错误:可选类型“字符串?”的值 未拆封;你的意思是用'!' 或者 '?'?返回 fmt.stringFromNumber(展开)

0 投票
2 回答
252 浏览

ios - 斯坦福计算器应用程序因错误“意外发现零”而崩溃

我是编程新手,我已经开始参加 iTunes U 上的斯坦福课程,以制作 iPhone 8 应用程序。他们使用 Xcode 6 和 Swift 1,而我在 El Capitan 使用 Xcode 7 和 Swift 2。我发现 Xcode 能够理解并帮助我纠正的代码存在一些差异(“println”是例如现在“打印”),但我被代码的一个特定部分绊倒了:

我已经仔细检查了几次,以确保这正是老师写的。他的构建正确且功能正确,而我的构建正确,但是当我尝试操作它时显示此致命错误,“在展开可选值时意外发现 nil”(所有详细信息请参见屏幕截图)。

错误截图

我一直在互联网上寻找一些类似的例子,包括这个网站上的一个(斯坦福计算器应用程序不断崩溃),但在尝试了所有建议后,我得出结论,我的系统中必须有一些东西是独一无二的,否则我正在操作在一个新的 Xcode/Swift 环境中,而不是其他有这个问题的环境。没有一个解决方案可以解决问题,而且它们都添加了自己的错误。

在回答其他人的问题时,有人建议我们使用此代码来确保如果“display”返回“nil”,它将提供“0”:

return (NSNumberFormatter().numberFromString(display.text) as? Double) ?? 0

我试过这个,但它只给了我更多的错误,有些似乎与 Swift 2 相关(它需要在 double 后面加一个逗号,要我打开 display.text,并抱怨缺少预期的表达式——也许是建议的代码在 Swift 1 中表现不错??)。

0 投票
1 回答
592 浏览

swift - 有没有办法检测跨 Swift 项目的强制展开?

有没有办法(通过编译器标志或脚本)检测跨 Swift 项目的强制展开?

我正在考虑这样的事情:

例如,不会触发误报var a: A!

0 投票
2 回答
593 浏览

ios - 为什么 Swift 2 偏爱强制解包而不是选项?

我不再看到 Xcode 抱怨某些东西需要可选项(“?”)。现在它总是被强制解包(爆炸“!”)。当我们现在强制展开时,还有什么理由再使用选项吗?

0 投票
4 回答
5097 浏览

swift - 将文本字段值分配给 Swift 中的变量

我正在尝试学习 Swift,结果它与其他语言的不同之处比我预期的要大......

我只想将用户输入的值作为整数存储在变量中。

我的尝试导致以下错误:“致命错误:在展开可选值时意外发现 nil”

我已经尝试了多种方法,但似乎无法提出解决方案,我知道必须有一种简单的方法来做到这一点。

我知道上面的代码不正确,但我认为这是最接近正确的我来了。就展开而言,我似乎遗漏了一些东西。我了解展开的原理,但是我尝试过的任何内容都不会编译,或者如果它确实编译了,那么它会在启动代码时失败并出现上述错误(按下按钮时会启动代码)。

提前感谢您的帮助!